vi reference
光标控制
h | Left |
编辑 | |
j | Down | ||
k | Up | ||
l (or spacebar) | Right | ||
w | Forward one word | ||
b | Back one word | ||
e | End of word | ||
( | Beginning of current sentence | ||
) | Beginning of next sentence | ||
{ | Beginning of current paragraph | ||
} | Beginning of next paragraph | ||
[[ | Beginning of current section | ||
]] | Beginning of next section | A | Append to end of current line |
0 | Start of current line | i | Insert before cursor |
$ | End of current line | I | Insert at beginning of line |
^ | First non-white character of current line | o | Open line above cursor |
+ or RETURN | First character of next line | O | Open line below cursor |
- | First character of previous line | ESC | End of insert mode |
n | | character n of current line | Ctrl-I | Insert a tab |
H | Top line of current screen | Ctrl-T | Move to next tab position |
M | Middle line of current screen | Backspace | Move back one character |
L | Last line of current screen | Ctrl-U | Delete current line |
nH | n lines after top line of current screen | Ctrl-V | Quote next character |
nL | n lines before last line of current screen | Ctrl-W | Move back one word |
Ctrl-F | Forward one screen | cw | Change word |
Ctrl-B | Back one screen | cc | Change line |
Ctrl-D | Down half a screen | C | Change from current position to end of line |
Ctrl-U | Up half a screen | dd | Delete current line |
Ctrl-E | Display another line at bottom of screen | ndd | Delete n lines |
Ctrl-Y | Display another line at top of screen | D | Delete remainer of line |
z RETURN | Redraw screen with cursor at top | dw | Delete word |
z . | Redraw screen with cursor in middle | d} | Delete rest of paragraph |
z - | Redraw screen with cursor at bottom | d^ | Delete back to start of line |
Ctrl-L | Redraw screen without re-positioning | c/pat | Delete up to first occurance of pattern |
Ctrl-R | Redraw screen without re-positioning | dn | Delete up to next occurance of pattern |
/text | Search for text (forwards) | dfa | Delete up to and including a on current line |
/ | Repeat forward search | dta | Delete up to, but not including, a on current line |
?text | Search for text (backwards) | dL | Delete up to last line on screen |
? | Repeat previous search backwards | dG | Delete to end of file |
n | Repeat previous search | J | Join two lines |
N | Repeat previous search, but it opposite direction | p | Insert buffer after cursor |
/text/+n | Go to line n after text | P | Insert buffer before cursor |
?text?-n | Go to line n before text | rx | Replace character with x |
% | Find match of current parenthesis, brace, or bracket. | Rtext | Replace text beginning at cursor |
Ctrl-G | Display line number of cursor | s | Substitute character |
nG | Move cursor to line number n | ns | Substitute n characters |
:n | Move cursor to line number n | S | Substitute entire line |
G | Move to last line in file | u | Undo last change |
U | Restore current line | ||
x | Delete current cursor position | ||
X | Delete back one character | ||
nX | Delete previous n characters | ||
. | Repeat last change | ||
~ | Reverse case | ||
y | Copy current line to new buffer | ||
yy | Copy current line | ||
"xyy | Copy current line into buffer x | ||
"Xd | Delete and append into buffer x | ||
"xp | Put contents of buffer x | ||
y]] | Copy up to next section heading | ||
ye | Copy to end of word | ||
File Handling | |||
:w | Write file |
| |
:w! | Write file (ignoring warnings) | ||
:w! file | Overwrite file (ignoring warnings) | ||
:wq | Write file and quit | ||
:q | Quit | ||
:q! | Quit (even if changes not saved) | ||
:w file | Write file as file, leaving original untouched | ||
ZZ | Quit, only writing file if changed | ||
:x | Quit, only writing file if changed | ||
:n1,n2w file | Write lines n1 to n2 to file | ||
:n1,n2w >> file | Append lines n1 to n2 to file | ||
:e file2 | Edit file2 (current file becomes alternate file) | ||
:e! | Reload file from disk (revert to previous saved version) | ||
:e# | Edit alternate file | ||
% | Display current filename | ||
# | Display alternate filename | ||
:n | Edit next file | ||
:n! | Edit next file (ignoring warnings) | ||
:n files | Specify new list of files | ||
:r file | Insert file after cursor | ||
:r !command | Run command, and insert output after current line |