Vi tips

From www.ReeltoReel.nl Wiki

vi editor tips

Keys

Key(s): Movement:
0 (zero) 1st column on the line
^ 1st non-blanc char on line
$ Last char on line
g_ Last non-blanc char on line
w Next word
W Next word and skip interpunction
e End of current word
E End of current word incl .interpunction
b Begin of current word
B Begin of current word incl. interpuction
ge End of previous word
gE End of previous word and skip interpunction
O Insert new line and switch to insert mode
Key(s): Action:
x Delete char under cursor
X Delete char before cursor
r Replace char under cursor with next typed char
d Delete chars until position of next command
dd Delete line
y Copy text until position of next command
yy Copy line
p Paste text after cursor
P Paste text before cursor
Key(s): Selection:
V Start selecting block of text
x Cut block of text
c Copy block of text
iw Word
aw Word incl spaces
is Sentence
as Sentence incl spaces
ip Paragraph
ap Paragraph incl spaces and empty lines
i( Block between brackets
a( Block incl brackets
i< Block between < >
a< Block incl < >
i{ Block between { }
a{ Block incl { }
i” Block between “ “
a” Block incl “ “
i` Block between ` `
a` Block incl ` `
Search: Action:
/text Search for text starting at cursor
n Find next
N Find previous
// Repeat last search
* Search forward for word currently under cursor
# Search backwards for word currently under cursor
:set hlsearch Highlights all matches
:set nohlsearch Disable ^
:nohl Don't show highlights from last search
:set incsearch Enables incremental search
:set noincsearch Disables ^

u undo

cut multiple lines: ###yy

delete rest of line from cursor: SHIFT-d

To open multiple files on a window

  • Horizontal split
vi -o file-one file-two
  • Vertical split
vi -O file-one file-two
  • Switch between the panes you are using.
     CTRL + W + Left key to activate left windows
     CTRL + W + Right key to activate right windows
     CTRL + W + Up key> to activate to windows above current one
     CTRL + W + Down key> to activate to windows down current one
  • Split Open one file at a time
vi file-one
  • To open the second file, go to the command mode (Esc)
:new file-two

OR

:split file-two
  • to split vertically
:vsplit
  • Typ 'CTRL-w w' to switch between the windows
  • Open new file:
:e newfile

Tabs

To open Vi with multiple tabs open:

vi -p /var/log/*.log
  • switch between tabs with gt
  • open new tab
:tabnew
or
:tabe file

to open new file in new tab

Search and Replace

Go in command mode and type:

Replace First occurence of string

:%s/string-to-replace/replace-with-string/

Replace All occurence of string

:%s/string-to-replace/replace-with-string/g

Replace All occurence of string with confirmation

:%s/string-to-replace/replace-with-string/gc

avoid staircase effect when pasting

If you're working in Vim and paste something into the terminal, sometimes you'll get a "staircase" effect where each line is progressively spaced farther outward, like so:

line 1
 line 2
  line 3
   line 4

Obviously, this isn't usually desirable.

To correct this, you can enable paste to prevent the staircase effect. In command mode, type:

:set paste

This isn't on by default. When paste is enabled, it disables mapping and some other functions, so you probably want to know how to turn it off as well:

:set nopaste

Highlighting

syntax highlighting for programming languages

:syntax on

Store settings

Put your most used commands, like :syntax on in ~/.vimrc

statusline

set statusline=%F%m%r%h%w%=\ [%Y]\ [%{&ff}]\ [%04l,%04v]\ [%p%%]\ [%L]

in /etc/vimrc