Basics
:e filename : Open filename for edition
:w : Save file
:q : Exit Vim
:w! : Exit Vim without saving
Search
/word : Search word from top to bottom
?word : Search word from bottom to top
/jo[ha]n : Search john or joan
/\<> : Search the, theatre or then
/the\> : Search the or breathe
/\<> : Search the
/\< ¦.\> : Search all words of 4 letters
/\/ : Search fred but not alfred or frederick
/fred\|joe : Search fred or joe
/\<\d\d\d\d\> : Search exactly 4 digits
/^\n\{3} : Find 3 empty lines
:bufdo /searchstr/ : Search in all open files
Replace
:%s/old/new/g : Replace all occurences of old by new in file
:%s/old/new/gw : Replace all occurences with confirmation
:2,35s/old/new/g : Replace all occurences between lines 2 and 35
:5,$s/old/new/g : Replace all occurences from line 5 to EOF
:%s/^/hello/g : Replace the begining of each line by hello
:%s/$/Harry/g : Replace the end of each line by Harry
:%s/onward/forward/gi : Replace onward by forward, case unsensitive
:%s/ *$//g : Delete all white spaces
:g/string/d : Delete all lines containing string
:v/string/d : Delete all lines containing which didn’t contain string
:s/Bill/Steve/ : Replace the first occurence of Bill by Steve in current line
:s/Bill/Steve/g : Replace Bill by Steve in current line
:%s/Bill/Steve/g : Replace Bill by Steve in all the file
:%s/\r//g : Delete DOS carriage returns (^M)
:%s/\r/\r/g : Transform DOS carriage returns in returns
:%s#<[^>]\+>##g : Delete HTML tags but keeps text
:%s/^\(.*\)\n\1$/\1/ : Delete lines which appears twice
Ctrl+a : Increment number under the cursor
Ctrl+x : Decrement number under cursor
ggVGg? : Change text to Rot13
Case
Vu : Lowercase line
VU : Uppercase line
g~~ : Invert case
vEU : Switch word to uppercase
vE~ : Modify word case
ggguG : Set all text to lowercase
:set ignorecase : Ignore case in searches
:set smartcase : Ignore case in searches excepted if an uppercase letter is used
:%s/\<./\u&/g : Sets first letter of each word to uppercase
:%s/\<./\l&/g : Sets first letter of each word to lowercase
:%s/.*/\u& : Sets first letter of each line to uppercase
:%s/.*/\l& : Sets first letter of each line to lowercase
Read/Write files
:1,10 w outfile : Saves lines 1 to 10 in outfile
:1,10 w >> outfile : Appends lines 1 to 10 to outfile
:r infile : Insert the content of infile
:23r infile : Insert the content of infile under line 23
File explorer
:e . : Open integrated file explorer
:Sex : Split window and open integrated file explorer
:browse e : Graphical file explorer
:ls : List buffers
:cd .. : Move to parent directory
:args : List files
:args *.php : Open file list
:grep expression *.php : Returns a list of .php files contening expression
gf : Open file name under cursor
Interact with Unix
:!pwd : Execute the pwd unix command, then returns to Vi
!!pwd : Execute the pwd unix command and insert output in file
:sh : Temporary returns to Unix
$exit : Returns to Vi
Alignment
:%!fmt : Align all lines
!}fmt : Align all lines at the current position
5!!fmt : Align the next 5 lines
Tabs
:tabnew : Creates a new tab
gt : Show next tab
:tabfirst : Show first tab
:tablast : Show last tab
:tabm n(position) : Rearrange tabs
:tabdo %s/foo/bar/g : Execute a command in all tabs
:tab ball : Puts all open files in tabs
Window spliting
:e filename : Edit filename in current window
:split filename : Split the window and open filename
ctrl-w up arrow : Puts cursor in top window
ctrl-w ctrl-w : Puts cursor in next window
ctrl-w_ : Maximise current window
ctrl-w= : Gives the same size to all windows
10 ctrl-w+ : Add 10 lines to current window
:vsplit file : Split window vertically
:sview file : Same as :split in readonly mode
:hide : Close current window
:nly : Close all windows, excepted current
:b 2 : Open #2 in this window
Auto-completion
Ctrl+n Ctrl+p (in insert mode) : Complete word
Ctrl+x Ctrl+l : Complete line
:set dictionary=dict : Define dict as a dictionnary
Ctrl+x Ctrl+k : Complete with dictionnary
Marks
mk : Marks current position as k
~k : Moves cursor to mark k
d'k : Delete all until mark k
Abbreviations
:ab mail mail@provider.org : Define mail as abbreviation of mail@provider.org
Text indent
:set autoindent : Turn on auto-indent
:set smartindent : Turn on intelligent auto-indent
:set shiftwidth=4 : Defines 4 spaces as indent size
ctrl-t, ctrl-d : Indent/un-indent in insert mode
>> : Indent
<< : Un-indent
Syntax highlighting
:syntax on : Turn on syntax highlighting
:syntax off : Turn off syntax highlighting
:set syntax=perl : Force syntax highlighting
Showing posts with label Vim. Show all posts
Showing posts with label Vim. Show all posts
Saturday, January 29, 2011
Vim - The Editor ( Substitution )
Definition: Vim stands for 'Vi Improved'. Vi is one of the most popular and powerful editors in the Unix world. Vi is an abbreviation for "Visual" editor. One of the first editors was a line editor called 'ed' (and 'ex'). Vim supports color syntax highlighting of program code and also emphasises text using different fonts like normal, bold or italics. A color editor like Vim can improve the productivity of programmers by 2 to 3 times!!
Substitution in Vi :
Substitution in Vi :
:1,10s/old/new/ --> replaces occurrences of "old" between line 1 to
10 by "new".
:.,$s/old/new/ --> replaces occurrences of "old" from current line
to end of file by "new".
:1,.s/old/new/ --> replaces occurrences of "old" from beginning of
file to current line by "new".
:.,+5s/old/new/ , :-5,+5s/old/new/ are all valid substitutions.
:+5,-5s/old/new/ --> invalid substitution as invalid range.
%s/old/new/ --> replace occurrences of "old" to "new".
all the examples so far replaces only the first occurrence of "old"
in each line to "new" it skips all other occurrences after the first.
to replace it globally "g" should be appended after the command like
%s/old/new/g, :1,10s/old/new/g and so on.
Another useful option flag is the confirm flag, ac
at the end of the
command. The confirm flag will display the line to be changed with a
pointer to the text to be changed and will wait for you to press "y"
or "n" to signify that you do or do not wish to go ahead with the
substitution.
try :%s/old/new/gc
:g/Gaurav/s/Kumr/Kumar/g --> replace all occurrences of "Kumr" by
"Kumar" in lines containing "Gaurav". if the line doesn't contain
"Gaurav", "Kumr" will not be replaced by "Kumar".
:1,.s/old/new/g
:.,$s//new/g --> if search string is not specified it uses the
last search string which is "old" here.
Any character can be used as a delimiter although the forward slash
has become the accepted standard character. The following commands
all do the same thing.
%s$old$new$g
%s&old&new&g
The substitute command picks up the first character after the s
and assumes that it is the delimiter and uses it through the rest of the command. The character used as a delimiter cannot then appear in the search text or the replacement text as it will be seen by the substitute command as a delimiter. You should use a different delimiter when you are actually doing a search that includes looking for the delimiter character. The following command replaces the forward slash with the word "per." It uses the at sign (@) as the delimiter since the slash is part of the search text.
:%s/^V^M//g --> to remove all Ctrl+M characters in a file.
In UNIX, you can escape a control character by preceding it
(please read above as "%s/Ctrl+V Ctrl+M//g" without spaces)
Note:
with a CONTROL-V.
Regular Expressions:
. -> matches any character excluding \n.
* -> matches zero or more occurrences of character that immediately
precedes it.It can also follow a . or a range in bracket [a-d].
^ -> expression should be found at the beginning of the line.
$ -> expression should be found towards the end of the line.
/ -> escape character.
\( \) --> Saves the pattern enclosed between \( and \) in a special
holding space or "hold buffer". Up to nine patterns can be
saved in this way on a single line.
:s/\(old\)\1/newnew -> changes "oldold" into "newnew".~ --> Matches whatever regular expression was used in the last search.
:%s/~/sue/gc : Substitute last replacement string
:%s/\r//g : removing ^M
:%s/\s*\r\?$// : remove trailing spaces && DOS returns
:%s/^\n\{3}// : delete 3 consecutive empty lines
:%s/^\n\+/\r/ : remove all empty lines
:'a,'bg/match/s/old/new/gc : substitute a range of marked lines.
:'a,'bs/cat\(s\)*/rat\1/gc : substitute singular and plurals both.
Subscribe to:
Posts (Atom)