suggestion box – latest additions – see also – colophon
:'k,'ls/regex/power/g## Increment / Decrement number in command mode (1) move cursor to number
:'k,'ls/^/#/## Remove trailing whitespace from every line
:%s/ *$//## Remove tabs
:%s/<CTRL-V><TAB>//g## Remove trailing whitespace from a block
:'k,'ls/\ *$//## Remove the first N-characters from every line N = 5
:%s/^.\{0,5\}//## Delete all lines N-character long N = 10
:g/^.\{10\}$/d## Delete all lines _except_ N-character long N = 10
:g!/^.\{10\}$/d## Search/replace paths using # as delimiter
:%s#/usr/local/log#/var/log#g## Search/replace ^M with LF
:g/<CTRL-V><ENTER>/s///g## Write the file as root :w !doas tee % ## Diff the file on disk with the buffer :w !diff -u % - ## Make a backup of the file on disk :!cp % %.bak ## Sort all lines :%!sort ## Sort a block `}` won't be shown
!}sort## Sort from the current line to EOF `G` won't be shown
!Gsort## Delete duplicated lines in the file :%!uniq ## Delete duplicated lines in the block `}` won't be shown
!}uniq## Delete duplicated lines till EOF `G` won't be shown
!Guniq## Underline all lines starting with `pattern`
:g/^pattern /t.|s/./=/g## Search for `pattern`, print the containing function (start with `def`) and line number
:g/pattern/?^ *def ?### Add # to paragraph containing `pattern`
:g/pattern/?^$?+,//-s/^/### Sort content of a multiline CSS block :g/{$/+,/^}/-!sort ## Sort content of a multiline CSS block (media queries) :g/^[^@].*{$/+,/}/-!sort ## Format content of `
` tag to fixed width width = 40
:g/<p>/+,/<\/p>/-!fmt -40## Format whole document :%!fmt -s In your .nexrc
map gF :%!fmt -s<CTRL-V><ENTER>## Reverse all lines, move `m` all lines to 0 :g/1*/m0 ## Swap `Lastname, Firstname` to `Firstname, Lastname` :%s/\(.*\), \(.*\)/\2 \1/ ## Convert to lowercase :%s/.*/\L&/ ## Surround text with pattern :%s/.*/`pattern` & `pattern`/ ## Join all lines :%j ## Copy `t` or move `m` lines containing `pattern`
:g/pattern/t$ :g/pattern/m$## Select a column of a table Select 3rd column separated by colon (`:`)
:%!awk -F':' '{print $3}'## Insert the sum of a list of numbers after an arbitrary number of lines (1) mark the first line: `mk` (2) mark the last line: `ml`
:'k,'l!awk 'END{print "total:", i}{i+=$1; print}'or
:'k,'l!awk 'END{print "total:", i} ++i || 1'## Email the block
:?^$?+,//-w !mail -s "subject" email@example.com## Enable and use `ex` history (1) Set `ESC` key to enable history or add to `~/.nexrc`:
:set cedit=<CTRL-V><ESC>(2) Use it with:
:<ESC>## Integrate with tmux buffer (1) cut text from current position to mark 'm' into tmux buffer. Hit undo to put text back into vi buffer.
!'mtmux load-buffer -(2) paste text from tmux buffer into vi buffer.
:r!tmux show-buffer(3) Map in ~/.nexrc (command mode)
map gx !'mtmux load-buffer -<CTRL-V><ENTER> map gy !'mtmux load-buffer -<CTRL-V><ENTER>u map gp :r!tmux show-buffer<CTRL-V><ENTER>## Remap ESC to ALT-i in ~/.nexrc (insert mode)
map! <CTRL-V><ALT-i> <CTRL-V><ESC>