===== Vi / Vim =====
==== Open Files, save and exit ====
$ vi file # open file
:w # save (write)
:wq # save and quit
:x # abbreviation of wq
:q! # quit without save
==== Grammar ====
=== Navigation ===
h # cursor left
j # cursor down
k # cursor up
l # cursor right
0 # (zero) move to beginning of the line
$ # move to the end of the line
w # move to the beginning of the next word
} # skip to next section
H # Jump to the beginning of the displayed screen
M # Jump to the center of the displayed screen
L # Jump to the bottommost line shown
CTRL-f # Jump down one Page
CTRL-b # Jump up one Page
CTRL-d # Jump down halve a page
CTRL-u # Jump up halve a page
gj # For very long lines that wrap at the screen edge, jump up one line.
gk # For very long lines that wrap at the screen edge, jump down one line.
% # Jump to the next bracket character (){}[]
=== Edit ===
i # insert at cursor position
a # add after cursor position
o # insert a line below
O # insert a line above
12i # write the same character 12 times ( type eight zero i dash results in ------------)
y # yank text (copy)
d # delete
dt' # delete everything to the character '
df' # delete everything including character '
c # copy line
y$ # copy to the end of the line (yank)
y5l # yank five Characters from the cursor position to the right
yt( # copy everything to the round bracket
d2w # delete two words
c2j # change the next two lines
:undo or u
:redo or CTRL-R
==== complex editing ====
=== Commenting 1 ===
CTRL-q Cursor turns gray as soon you move the cursor keys (or hjkl). Mark everything you want comment
SHIFT-i press Shift Key and i
# type '#'
ESC Press ESC
=== Commenting 2 ===
Add '# ' in the beginning of line 5 to 12
:5,12s/^/# /
=== Uncomment 1 ===
CTRL-q Mark everything you want to remove
q press q
=== Uncomment 2 ===
remove '# ' from the beginning of line 5 to 12
:5,12s/^# //
==== Split window ====
$ vi file1.txt
:split file2.txt # file2.txt is display in the same terminal window on top of file1.txt
:q # close file2.txt
:vsplit file2.txt # file2.txt is displayed in the same terminal window to the right of file1.txt
:CTRL-w l # change to the right window
:CTRL-w h # change to the left window
:CTRL-w j # change to the bottom window
:CTRL-w k # change to the top window
==== Line Numbers ====
:set nu # show line numbers
:set nonu # hide line numbers
:set ruler # show horizontal and vertical cursor position at the bottom right of the terminal
:set rnu # show relative line numbers
:set nornu # hide relative line numbers
==== .vimrc example file ====
set hidden
set ruler
set tabstop=4
set mouse=r
set number (set nu) # Zeilennummern einschalten
set relativenumber (set rnu) # relative Zeilennummern!!!!)
set relativenumber number (set rnu nu) # beides
set ruler
set nocp
filetype plugin on
set background=dark
hi Comment cterm=italic ctermfg=69 gui=italic guifg=#5d6eff
hi Constant ctermfg=172
hi Function ctermfg=9