Last active
April 26, 2018 06:54
-
-
Save bagustris/0f321dbdd3d1ce85df1b412bf0488705 to your computer and use it in GitHub Desktop.
VIM Cheat Sheet
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# vimcheat.sh: the vim cheatsheet | |
# Ref: https://www.catswhocode.com/blog/vim-cheat-sheet-for-2016 | |
# Usage: less `vimcheat.sh` then `/typewhatyoulookfor` | |
# :command arguments Explanation for command inside VIM OR | |
# shortcut Explanation for shortcut, eg: ciw (C+I+W) to change inner word | |
#Basics | |
:e filename Open filename for edition | |
:w Save file | |
:q Exit Vim | |
:q! Quit without saving | |
:x Write file (if changes has been made) and exit | |
:sav filename Saves file as filename | |
. Repeats the last change made in normal mode | |
5. Repeats 5 times the last change made in normal mode | |
#Moving in the file | |
k or Up Arrow move the cursor up one line | |
j or Down Arrow move the cursor down one line | |
e move the cursor to the end of the word | |
b move the cursor to the begining of the word | |
0 move the cursor to the begining of the line | |
G move the cursor to the end of the file | |
gg move the cursor to the begining of the file | |
L move the cursor to the bottom of the screen | |
:59 move cursor to line 59. Replace 59 by the desired line number. | |
20| move cursor to column 20. | |
% Move cursor to matching parenthesis | |
[[ Jump to function start | |
[{ Jump to block start | |
#Replace | |
:%s/old/new/g Replace all occurences of old by new in file | |
:%s/onward/forward/gi Replace onward by forward, case unsensitive | |
:%s/old/new/gc 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/^M//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 | |
cw change word | |
ciw change inner word | |
#Set Leter/Case | |
:set ignorecase ignore cases 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 Retourns to Vi | |
:!command % Run the command on edited file | |
#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 | |
:only Close all windows, excepted current | |
:b 2 Open #2 in this window | |
#Spell check | |
:set spell spelllang=en_us set spell check to english | |
:set local spelllang=en_us set locak to english, useful for code | |
:set nospell | |
[s next highlight | |
]s previous highligth | |
z= correction list | |
#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 | |
#Copy Paste | |
y Copy word in the cursor | |
yy Copy/yank line | |
3yy copy 3lines | |
yw Yank word | |
p paste word | |
dd Delete current line | |
D Cut to end of line | |
y$ Copy to end of Line | |
v0y Copy from cursor to end of cursor (visually) | |
#Search | |
/word Search word from top to bottom | |
?word Search word from bottom to top | |
* Search the word under cursor | |
/\cstring Search STRING or string, case insensitive | |
/jo[ha]n Search john or joan | |
/\< the Search the, theatre or then | |
/the\> Search the or breathe | |
/\< the\> 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 | |
bufdo %s/something/somethingelse/g Search something in all the open buffers and replace it with somethingelse | |
#Other | |
% jump to matching parenthesis | |
=% indent the code between parenthesis | |
[[ jump to function start | |
[{ jump to block start | |
:new abc.txt edit abc.txt in new window |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment