Skip to content

wakeLanaka/vim_cheatsheet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 

Repository files navigation

Vim cheat sheet

Starting Vim

vim [file1] [file2] ...

Table of contents


Stay as much as possible in normal-mode to be able to repeat actions with the '.'(Dot)!

Vim modality

vim has 3 main modes:

  • Normal mode: For navigation and manipulation of text. This is the mode that vim will usually start in
  • Insert (edit) mode: For inserting new text, where you type into your file like other editors.
  • Command mode: For executing extra commands like the help, shell, ...

toc

Normal mode

motions

move around the text (file) by:

		           gg
		         <ctrl b>
	             <ctrl u>
		            -
		            k
		            ^
0 / ^ / B / b / h <   > l / e / E / w / W / $
                    v
                     
                    j
                 <ctrl d>
                 <ctrl f>
                    G 

toc

arrow keys

  • h: left
  • j: down
  • k: up
  • l: right

word

  • w: next word
  • W: next WORD
  • b: previous word
  • B: previous WORD
  • e: end of word
  • E: end of WORD

line

  • 0: begin of line (column 0)
  • ^: begin of line (non-blank)
  • $: end of line
  • - = k^: start of previous line
  • = j^: start of next line

window

  • H: top of window
  • M: middle of window
  • L: low (bottom) of window
  • zt: scroll to top
  • zz: scroll to middle
  • zb: scroll to bottom
  • <ctrl b> / <ctrl f>: previous / next page
  • <ctrl u> / <ctrl d>: previous / next half page
  • (<ctrl w>t) <ctrl w>H: change 2 Windows from horizontal to split
  • (<ctrl w>t) <ctrl w>K: change 2 Windows from split to horizontal

toc

searching

searching in Normal Mode:

  • f[char] / F[char]: find forward / backward to next / previous char (exactly on char)
  • t[chat] / T[char]: up to forward / backward to next / previous char (next to the char)
  • , / ;: previous / next repeat for f/t/F/T action
  • * / #: find current word backward / forward
  • /[pattern] / ?[pattern]: search forward / backward by matching pattern
  • n / N: next / previous result
  • [I: show lines with matching word under cursor

toc

jumps and marks

  • <ctrl o>: jump back
  • <ctrl i>: jump forward
  • <ctrl 6>: jump to the buffer you just left
  • <ctrl ]>: jump to tag under cursor (if ./tags is available)
  • '': jump back to last jump
  • '.: jump to last edited line
  • { / }: previous / next paragraph
  • %: matching (), {}, []
  • m[char] / '[char]: mark by / jump to [char]
  • m[CHAR] / '[CHAR]: mark by / jump to [CHAR] across the files.

file

  • gg / G: go to begin / end of file
  • [num]gg / [num]G / :num<CR> : go to line num
  • gd: go to definition of current word
  • gf: go to the file (under the cursor)
  • gi: go to last inserted
  • gv: go to last selected and select

toc

Edit

goto insert mode

these commands take you in Insert Mode:

  • i: insert at left of cursor
  • I -> insert at the line beginning (non-blank)
  • a: insert at right of cursor
  • A: insert at end of line
  • o: insert by adding new line below the cursor
  • O: insert by insert new line above the cursor
  • s: substitute at cursor and enter insert mode
  • S = ^DA = ddO: delete current line and enter insert mode
  • C = c$: change line from cursor to EOL
  • <c-i>: right indent(>>)(In Insert-mode)
  • <c-d>: left indent(<<)(In Insert-mode)

stay in command mode

editing the text without transition to Insert Mode:

  • .: repeat last command
  • ~: swap case
  • x: delete char current char
  • r: replace char under the cursor
  • dd: delete current line
  • J: merge with the next line
  • D: delete line from cursor to the EOL
  • yy: yank/copy current line
  • u: undo
  • <ctrl r>: redo

paste:

  • p: paste to the next line
  • P: paste above current line

visual mode:

  • v: into visual/select mode
  • V: into visual/select mode by line
  • <ctrl v>: into visual/select mode by block

alignment:

  • =<CR>, ==: auto indent
  • ><CR>, >>: shift right, increase indent
  • <<CR>, <<: shift left, decrease indent

toc

operators

operator are generally constructed as:

[operator][count][motion]
[operator]i[motion]
  • operators:
    • c: change command ...
    • d: delete ...
    • y: yank (copy) ...
    • g~: swap case ...
    • gu: to lower case ...
    • gU: to upper case ...
  • motion:
    • w / W: word / WORD
    • [, ]: block
    • (, ): block
    • <, >: block
    • ", ': in double quote or quote
    • t: XML/HTML tag
    • s: sentence

examples:

  • di): delete the text inside current paranthesis
  • ci": change the text inside ""
  • gUiw: make the word under the cursor to upper case

toc

Utilities

registers

  • "[char][y|d]: yank/delete into register
  • "[char][p|P]: paste from register
  • :echo @[char]: shows register content
  • :reg[isters]: shows all registers

macro

  • q[char]: start recording into register char
  • q: stop recording macro
  • @[char]: play macro in register char
  • @@: repeat last playback

code folding

  • zi: toggles folding on or off
  • za: toggles current fold open or close
  • zc: close current fold
  • zC: close current fold recursively
  • zo: open current fold
  • zO: open current fold recursively
  • zR: open all folds
  • zM: close all folds
  • zv: expand folds to reveal the cursor
  • zk / zj: move to previous / next fold

toc

windows and split

  • <ctrl w> s = :sp[lit]: split current window horizontally
  • <ctrl w> v = :vs[plit]: split current window vertically
  • <ctrl w> c = :cl[ose]: close current window
  • <ctrl w> o = :on[ly]: close all windows except current one
  • <ctrl w> <ctrl w>: switch to next split window
  • <ctrl w> <ctrl p>: switch to previous split window
  • <ctrl w> hjkl: switch (move cursor) to left, below, above or right split
  • <ctrl w> HJKL: move current window to left, below, above or right
  • <ctrl w> r: rotate window clockwise
  • <ctrl w> =: make all windows equal in size
  • [num]<ctrl w> -: increase/decrease current window height
  • [num]<ctrl w> <>: increase/decrease current window width
  • <ctrl w> _: maximize current window
  • <ctrl w> T: move current window to new tab

toc

spell checking

  • ]s / [s: jump to next / previous spelling error
  • z=: suggest corrections for current word
  • zg: add current word to the dictionary
  • zw: remove current word from dictionary

toc

Insert mode

mode change

  • Esc = <ctrl c> = <ctrl [>: exit insert mode

auto complete

  • <ctrl p>: auto-complete / previous item
  • <ctrl n>: auto-complete / next item
  • <ctrl x><ctrl l>: auto complete line mode
  • <ctrl x><ctrl f>: auto complete file

cool editing stuff

  • <ctrl w>: delete word before cursor
  • <ctrl u>: delete line before cursor
  • <ctrl r>[char]: insert content of register [char]
  • <ctrl t>: increase line indent
  • <ctrl u>: decrease line indent
  • <ctrl a>: insert last inserted text(wie "." im Normal-Mode)

toc

Command mode

Navigation

  • CTRL-Left: jump left for 1 word
  • CTRL-E: jump to the end of the command
  • CTRL-B: jump to the beginning of the command
  • CTRL-R: lets you get access to the registers
  • CTRL-R CTRL-W: adds the word under the cursor to the commandline
  • CTRL-P: Previous command
  • CTRL-N: Next command

Substitute

  • :%s/four/4/g: substitiutes all "four" with "4" in the whole buffer
  • flag g: substitutes all occurence in the line
  • flag c: ask before substitution
  • flag e: when no substitiution occurs, it won't end in an error
  • \<: signalises the beginning of a word
  • \>: signalises the end of a word
  • \1: is a backreference, refers to the "( )"

lists

  • :jumps: shows the jump list
  • :changes: shows the change list
  • :reg[isters]: shows the registers
  • :marks: shows the marks
  • :delm[arks] {marks}: delete specified mark(s)
    • delm a b 1 \": deletes a, b, 1 and "
    • delm a-h: deletes all marks from a to h
  • :delm[marks]!: deletes all lowercase marks

file and buffers

  • :w[rite]: write current file
  • :q: close/quit current file, split or tab
  • :wq = ZZ: write current file and quit
  • :q! = ZQ: quit without writing the changes
  • :qa: quit all splits
  • :ls: list all open files/buffers
  • :f[ile] = <ctrl g>: shows current file path
  • :e[dit]: open a file for editing
  • :ene[w]: open a blank new file for editing
  • :b<n>: jump to buffer n returned from :ls
  • :b <file>: jump to buffer file, Tab to scroll through available options
  • :bn[ext]: jump to next buffer
  • :bp[rev]: jump to previous buffer
  • :bd[elete]: remove file from buffer list
  • :vert sb 1: vertically splits buffer 1

toc

shell

  • :mak[e]: run make in current directory
  • :cw: toggle mini window for errors
  • :!: executes external shell command
  • :r[ead]: read external program output into current file(mostly used as :r! "some terminal command")

toc

windows and splits

  • :sp[lit] = <ctrl w> s: split current window horizontally
  • :vs[plit] = <ctrl w> v: split current window vertically
  • :cl[ose] = <ctrl w> c: close current window
  • :on[ly] = <ctrl w> o: close all windows except current one
  • :sp | terminal = opens in split-screen the terminal

toc

tabs

  • <ctrl w> gf: open file under the cursor into new tab
  • :tabs: list current tabs and windows
  • :tabn = <ctrl PageDown>: next tab
  • :tabn <n>: goto tab n
  • :tabp = tabN = <ctrl PageUp>: previous tab
  • :tabe [file]: create a new blank tab or opens file in that tab

toc

help

  • :h cmd: normal mode command help
  • :h :cmd: command line help for cmd
  • :h i_cmd: insert mode command help
  • :h v_cmd: visual mode command help
  • :h c_cmd: command line editing cmd help
  • :h 'option': help of option
  • :helpg[rep]: search through help docs!

special help sections

  • :h motions
  • :h word-motions
  • :h jump-motions
  • :h mark-motions
  • :h operators
  • :h buffres
  • :h windows
  • :h tabs
  • :h registers
  • :h pattern-searches

toc

options

  • :set <opt>?: shows current option value
  • :set no<opt>: turn off flag opt
  • :set opt: turn on flag opt
  • :set opt=val: override value of opt
  • :set opt =val: append val to opt
  • :echo &opt: shows value of opt

essential options

  • hidden or hid: when off, a buffer is unloaded when it's abandoned.
  • laststatus or ls: shows status line: 0 (never), 1 (only if at least two windows), 3 (always)
  • hisearch or his: highlight search matches
  • number or nu: shows line number
  • showcmd or sc: shows command as you type them (may not be available on your compilation)
  • ruler or ru: shows line and column number of the cursor
  • wrap: controls line wrapping
  • ignorecase or ic: ignores case for search patterns
  • smartindent or si: flag for smart indenting
  • foldmethod or fdm: fold method
  • spell / nospell: turn spell checking enable or disable.

toc

substitute

  • :s/search/replace/: basic substitution on a line
  • :%s/search/replace/: run substitution on every line
  • :%s/search/replace/g: g flag means apply to every match
  • :%s/search/replace/c: c flag means ask for confirmation

tags / ctags

by executing $> ctags -r under project tree:

  • :tag <name>TAB: goes to tag name
  • <ctrl ]>: goes to the tag under cursor

toc

Session

  • :mksession <Session Name>.vim: Creates a session with the actual opened files
  • vim -S <Session Name>.vim: Opens the session

Nerdtree

  • gi: open file in horizonal split, but stay in Nerdtree
  • gs: open file in vertical split, but stay in Nerdtree

Vimdiff

  • do: get all changes from other window into the current window
  • dp: put all the changes from current window into the other window
  • ]c: jump to the next change
  • [c: jump to the previous change
  • zo: open fold
  • zc: close fold
  • zr: reducing folding level
  • zm: one more folding level, please
  • :diffupdate, :diffu: recalculate the diff*
  • :.diffg LOCAL: get this line from LOCAL file (Beachte den "." vor diffg!!)
  • V :diffget: get this visually selected
  • V :diffput: put this visually selected
  • :diffg RE: get from REMOTE
  • :diffg BA: get from BASE
  • :diffg LO: get from LOCAL
  • :diffoff: to turn diff off
  • :diffthis: to turn diff on

toc

Stuff from the book

  • gU{motion}: uppercase everything in {motion}(gu for lowercase)
  • gc{motion}: Comment line(commentary Plugin)
  • cgn: must have highlighted a word. Will be very useful for '.'

Insert mode

  • ctrl-h: backspace
  • ctrl-w: delete backwards a word
  • ctrl-u: delete from cursor to start of line
  • ctrl-o: goes for ONE command to normal mode and automatic back to insert mode

Visual mode

  • o: Go to other end of highlighted text

Command mode

  • :(vert) term: opens terminal

Websites

http://vimcasts.org/ http://viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published