mirror of
https://github.com/preservim/vim-pencil.git
synced 2025-11-14 12:53:46 -05:00
whichwrap, autoindent, fo, reorg of README
This commit is contained in:
101
README.markdown
101
README.markdown
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
This plugin focus on the basics:
|
This plugin focus on the basics:
|
||||||
|
|
||||||
* Sets up buffer for word processing
|
* Configures a buffer for word processing
|
||||||
* Use for editing markdown, textile, documentation, etc.
|
* Use for editing markdown, textile, documentation, etc.
|
||||||
* Configures wrap mode, auto-detecting from modeline if present
|
* Configures wrap mode, auto-detecting from modeline if present
|
||||||
* Adjusts navigation key mappings to suit the wrap mode
|
* Adjusts navigation key mappings to suit the wrap mode
|
||||||
@@ -47,7 +47,7 @@ other writing tools:
|
|||||||
for mouse, track pad, or arrow keys
|
for mouse, track pad, or arrow keys
|
||||||
* Minimal chording, with many mnemonic-friendly commands
|
* Minimal chording, with many mnemonic-friendly commands
|
||||||
* Sophisticated capabilities for navigating and manipulating text
|
* Sophisticated capabilities for navigating and manipulating text
|
||||||
* Highly configurable to suit your needs, with many plugins available
|
* Highly configurable to suit your needs, with many great plugins available
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@@ -63,9 +63,9 @@ Vim, consider installing this plugin.)
|
|||||||
### Hard line breaks or soft line wrapping?
|
### Hard line breaks or soft line wrapping?
|
||||||
|
|
||||||
Coders will have the most experience with the former, and writers the
|
Coders will have the most experience with the former, and writers the
|
||||||
latter. But whatever your background, chances are that you are living in
|
latter. But whatever your background, chances are that you are must
|
||||||
a mixed environment where you must contend with both. This plugin doesn't
|
contend with both conventions. This plugin doesn't force you to choose
|
||||||
force you to choose a side—each buffer can be configured independently.
|
a side, where each buffer can be configured independently.
|
||||||
|
|
||||||
In most cases you can set a default to suit your preference and let
|
In most cases you can set a default to suit your preference and let
|
||||||
auto-detection figure out what to do. Add to your `.vimrc`:
|
auto-detection figure out what to do. Add to your `.vimrc`:
|
||||||
@@ -89,8 +89,8 @@ But for files of type `text`, it will *always* use hard line endings.
|
|||||||
Because auto-detect doesn’t always work correctly, you can invoke commands
|
Because auto-detect doesn’t always work correctly, you can invoke commands
|
||||||
to set the behavior for the current buffer:
|
to set the behavior for the current buffer:
|
||||||
|
|
||||||
* `SoftPencil` - configure for soft wrapping
|
* `SoftPencil` - configure for the soft wrapping of very long lines
|
||||||
* `HardPencil` - configure for hard line endings
|
* `HardPencil` - configure for line endings with hard line breaks
|
||||||
* `TogglePencil` - if off, enables with detection; if on, turns off
|
* `TogglePencil` - if off, enables with detection; if on, turns off
|
||||||
* `NoPencil` - removing mappings and restore global settings
|
* `NoPencil` - removing mappings and restore global settings
|
||||||
|
|
||||||
@@ -103,32 +103,28 @@ nmap <silent> <leader>pn :NoPencil<cr>
|
|||||||
nmap <silent> <leader>pp :TogglePencil<cr>
|
nmap <silent> <leader>pp :TogglePencil<cr>
|
||||||
```
|
```
|
||||||
|
|
||||||
Also, more commands in ‘Automatic Formatting’ below.
|
### Automatic formatting
|
||||||
|
|
||||||
### Additional settings
|
_This ‘autoformat’ feature affects **HardPencil** mode only._
|
||||||
|
|
||||||
You can configure the default `textwidth` for Hard mode, when none is set
|
When using **HardPencil** mode, Vim’s autoformat feature will be enabled
|
||||||
or available via modeline:
|
by default and can offer many of the same benefits as soft wrapping lines.
|
||||||
|
But autoformat can cause havoc when editing outside of paragraphs of
|
||||||
|
sentences, such as when editing a table or code block. In these cases you
|
||||||
|
will need to disable it, at least temporarily, via a command:
|
||||||
|
|
||||||
|
* `AutoPencil` - enables autoformat
|
||||||
|
* `ManualPencil` - disables autoformat
|
||||||
|
* `ToggleAutoPencil` - enables if disabled, etc.
|
||||||
|
|
||||||
|
Or optionally map to keys in your `.vimrc`:
|
||||||
|
|
||||||
```vim
|
```vim
|
||||||
let g:pencil#textwidth = 74
|
nnoremap <silent> <leader>pa :AutoPencil<cr>
|
||||||
|
nnoremap <silent> <leader>pm :ManualPencil<cr>
|
||||||
|
nnoremap <silent> <leader>pt :ToggleAutoPencil<cr>
|
||||||
```
|
```
|
||||||
|
|
||||||
`joinspaces` determines number of spaces after period (`0`=1 space, `1`=2 spaces)
|
|
||||||
|
|
||||||
```vim
|
|
||||||
let g:pencil#joinspaces = 0
|
|
||||||
```
|
|
||||||
|
|
||||||
## Automatic formatting
|
|
||||||
|
|
||||||
_This ‘autoformat’ feature affects ‘hard’ line break mode only._
|
|
||||||
|
|
||||||
When using hard line breaks, Vim’s autoformat feature can offer many of
|
|
||||||
the same benefits as soft wrapping lines. But autoformat can cause havoc
|
|
||||||
when editing outside of paragraphs of sentences, such as when editing
|
|
||||||
a table or code block. In these cases you will need to disable it.
|
|
||||||
|
|
||||||
To set the default behavior, add to your `.vimrc`:
|
To set the default behavior, add to your `.vimrc`:
|
||||||
|
|
||||||
```vim
|
```vim
|
||||||
@@ -146,33 +142,52 @@ augroup pencil
|
|||||||
augroup END
|
augroup END
|
||||||
```
|
```
|
||||||
|
|
||||||
You can also toggle it as needed with a command:
|
### Manual formatting
|
||||||
|
|
||||||
* `AutoPencil` - enables autoformat
|
Note that you need not rely on autoformat and can alway reformat your
|
||||||
* `ManualPencil` - disables autoformat
|
paragraphs manually with standard Vim commands:
|
||||||
* `ToggleAutoPencil` - enables if disabled, etc.
|
|
||||||
|
|
||||||
Or bind to keys in your `.vimrc`:
|
|
||||||
|
|
||||||
```vim
|
|
||||||
nnoremap <silent> <leader>pa :AutoPencil<cr>
|
|
||||||
nnoremap <silent> <leader>pm :ManualPencil<cr>
|
|
||||||
nnoremap <silent> <leader>pt :ToggleAutoPencil<cr>
|
|
||||||
```
|
|
||||||
|
|
||||||
Note that you don’t have to rely on autoformat and can alway reformat your
|
|
||||||
paragraphs manually with the standard Vim commands:
|
|
||||||
|
|
||||||
* `gqip` - manual format
|
* `gqip` - manual format
|
||||||
* `vipJ` - manual unformat
|
* `vipJ` - manual unformat
|
||||||
|
|
||||||
Optionally, you can map these to underutilized keys in your `.vimrc`:
|
Optionally, you can map these sequences to underutilized keys in your
|
||||||
|
`.vimrc`:
|
||||||
|
|
||||||
```vim
|
```vim
|
||||||
nnoremap <silent> Q gqip
|
nnoremap <silent> Q gqip
|
||||||
nnoremap <silent> K vipJ
|
nnoremap <silent> K vipJ
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Default textwidth
|
||||||
|
|
||||||
|
You can configure the default `textwidth` for HardPencil mode, when none
|
||||||
|
is set globally, for your buffer, or available via modeline:
|
||||||
|
|
||||||
|
```vim
|
||||||
|
let g:pencil#textwidth = 74
|
||||||
|
```
|
||||||
|
|
||||||
|
### Sentence spacing
|
||||||
|
|
||||||
|
When formatting, by default only one space will be inserted after
|
||||||
|
a period(`.`), exclamation point(`!`), or question mark(`?`). You can
|
||||||
|
change this default.
|
||||||
|
|
||||||
|
```vim
|
||||||
|
let g:pencil#joinspaces = 0 "`0`=1 space, `1`=2 spaces
|
||||||
|
```
|
||||||
|
|
||||||
|
### Cursor wrap
|
||||||
|
|
||||||
|
By default, `h`/`l` and the left/right cursor keys will move to the
|
||||||
|
previous/next line after reaching first/last character in a line with
|
||||||
|
a hard break. If you wish to retain the default Vim behavior, set the
|
||||||
|
`cursorwrap` value to 0.
|
||||||
|
|
||||||
|
```vim
|
||||||
|
let g:pencil#cursorwrap = 1 " `0`=disable, `1`=enable
|
||||||
|
```
|
||||||
|
|
||||||
## Auto-detection via modeline
|
## Auto-detection via modeline
|
||||||
|
|
||||||
Will the wrapping mode be detected automatically? Maybe. But you can
|
Will the wrapping mode be detected automatically? Maybe. But you can
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ function! pencil#init(...) abort
|
|||||||
setlocal textwidth=0
|
setlocal textwidth=0
|
||||||
setlocal wrap
|
setlocal wrap
|
||||||
setlocal linebreak
|
setlocal linebreak
|
||||||
setlocal colorcolumn=0
|
setlocal colorcolumn=0 " doesn't align as expected
|
||||||
else
|
else
|
||||||
setlocal textwidth<
|
setlocal textwidth<
|
||||||
setlocal wrap< nowrap<
|
setlocal wrap< nowrap<
|
||||||
@@ -124,16 +124,32 @@ function! pencil#init(...) abort
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if b:wrap_mode
|
if b:wrap_mode
|
||||||
|
setlocal autoindent " needed by fo=n
|
||||||
setlocal nolist
|
setlocal nolist
|
||||||
setlocal wrapmargin=0
|
setlocal wrapmargin=0
|
||||||
setlocal display+=lastline
|
setlocal display+=lastline
|
||||||
setlocal formatoptions+=1 " don't break line before 1 letter word
|
setlocal formatoptions+=1 " don't break line before 1 letter word
|
||||||
setlocal formatoptions+=t
|
setlocal formatoptions+=t
|
||||||
|
setlocal formatoptions+=n " recognize numbered lists
|
||||||
|
"setlocal formatoptions+=b " investigate this
|
||||||
|
"setlocal formatoptions+=m " investigate this
|
||||||
|
"setlocal formatoptions+=MB " investigate this
|
||||||
|
|
||||||
|
if g:pencil#cursorwrap
|
||||||
|
setlocal whichwrap+=<,>,h,l,[,]
|
||||||
|
endif
|
||||||
|
|
||||||
|
" clean out stuff we likely don't want
|
||||||
|
setlocal formatoptions-=2
|
||||||
|
setlocal formatoptions-=v
|
||||||
|
setlocal formatoptions-=w " trailing whitespace continues paragraph
|
||||||
else
|
else
|
||||||
|
setlocal autoindent<
|
||||||
setlocal list< nolist<
|
setlocal list< nolist<
|
||||||
setlocal wrapmargin<
|
setlocal wrapmargin<
|
||||||
setlocal display<
|
setlocal display<
|
||||||
setlocal formatoptions<
|
setlocal formatoptions<
|
||||||
|
setlocal whichwrap<
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if b:wrap_mode
|
if b:wrap_mode
|
||||||
|
|||||||
@@ -35,6 +35,12 @@ if !exists('g:pencil#joinspaces')
|
|||||||
let g:pencil#joinspaces = 0
|
let g:pencil#joinspaces = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if !exists('g:pencil#cursorwrap')
|
||||||
|
" by default, h/l and cursor keys will wrap around hard
|
||||||
|
" linebreaks. Set to 0 if you don't want this behavior
|
||||||
|
let g:pencil#cursorwrap = 1
|
||||||
|
endif
|
||||||
|
|
||||||
" # Commands
|
" # Commands
|
||||||
command -nargs=0 HardPencil call pencil#init({'wrap': 'hard'})
|
command -nargs=0 HardPencil call pencil#init({'wrap': 'hard'})
|
||||||
command -nargs=0 SoftPencil call pencil#init({'wrap': 'soft'})
|
command -nargs=0 SoftPencil call pencil#init({'wrap': 'soft'})
|
||||||
|
|||||||
Reference in New Issue
Block a user