| Moving about | |
| cursors, home, end, pg up, pg dn | move about |
| ..or h,j,k,l, 0, $, Ctrl-b, Ctrl-f | |
| Space | move right |
| Bkspace | moves left |
| return | go to start of next line |
| Ctrl-d | move down half page |
| Ctrl-u | move up half page |
| G | move to file end |
| n G | move to line n |
| H | move to file begin |
| 10w | move along 10 words |
| 8 enter | move down 8 lines |
| ( and ) | move to next sentence start (new para, or punct mark and two space defined) |
| Enter edit modes with | |
| a | app mode -at after cursor |
| i | ins mode -at bef cursor |
| s | ins replace char |
| S or cc | replace line |
| R | type over line |
| o | ins new line |
| O | ins new line above |
| 3i | enter insert mode, type, escape then entered text repeated 3 times |
| delete | remove char but not lines |
| U | restore line |
| esc | to return to command mode |
| cw | change word - enter new text, escape |
| In command mode | |
| x | to delete char |
| Ctrl-D | to delete to end of line |
| dd | to cut line, u to undo/redo |
| yy | to copy the line, p to paste in |
| w | moves by word, W moves by space delimited word |
| dw | deletes word |
| 70dw | deletes 70 words (a way to last lines of file) |
| s/old/new/ | replaces 'old' with 'new' on current line, add g on end to replace all |
| 1,$ s/old/new/g | replaces every occurance, from line 1 to last line |
| Select text | |
| V | start select by line |
| cursors | add to selected |
| d | cuts selected |
| y | yanks selected |
| p | inserts cut/yanked |
| Ctrl-V | start select (geometric) |
| d | then removes selected (geometric) -but leaves the lines |
| D | removes all text on selected lines -but leaves the lines |
| y | yanks |
| p | inserts the cut text |
| (my Ctrl-[ and Ctrl-] work to copy and paste selection too, using xsel - see my Urxvt page) | |
| Search | |
| / pattern | search fwd |
| ? pattern | search backwd |
| n | search next fwd |
| N | search next backwd |
| Opening files | |
| vi -R file | read only mode |
| vi +s file | open at file end |
| vi +12 file | open at line 12 |
| vi +/book | open file at pattern "book" |
| Controls | |
| :r filename | insert file |
| :e filename | Stop editing the current file and edit the specified file. |
| :n | Stop editing the current file and edit the next file specified on the command line |
| :q | Quit (can't if changed file) |
| :q! | Quit no write out |
| :w | write the file to disk (can't if file yet unnamed) |
| :wq | write and quit |
| :w filename | Save the file with new filename |
| :wa | write all files to disk |
| :abbreviate teh the enter | abbreviate a miss-spelling |
| :map Ctrl-v <new key> <vi key> enter | add mapping |
| :map enter | show key mapping |
| :unmap Ctrl-v <map key> enter | remove a mapping |
| :! | enter bash prompt |
| !! <unix command> | bash output added to file |
| Ctrl-S | freeze file |
| Ctrl-Q | resume edit |
| Ctrl-G | file info |
| During a process | |
| Ctrl-z | to stop (send to bg) -same as & on end of bash command |
| fg | to bring to foregr. |
| bg | to list bg jobs |
| fg %n | bring to foregr. job n |
| jobs | to list all active bash progs? |
| ps -g|-x|-u (etc) | to list active processes |
| kill %n | kill job n |
| kill (PID) | kill process of PID no. |