Useful commands to master vim
Tips
All delete commands which are run with d, may use instead c. This will do the same delete operation, but will open directly on insert mode afterwards.
Help
Type :help change.txt
Redirect input into a Vim buffer
cat input | vim - This, ran from bash, outputs the result of a command or a file into a vim buffer, where we can do whatever with it, without modifying the original source.
Useful vim commands
All of this are executed in command mode.
:w filename - writes the content we are modifying, into another file
:%! grep -v delete-this - the part :%! executes bash commands for the content we’re modifying. This example will delete all the lines from our file, which contain the String delete-this.
:set rnu - see relative line numbers to your caret. :set rnu! turns off.
:set nu - see absolute line numbers.
Search something
f - find and travel to next ocurrence. For example f. searches for the next .
/whatever - searches for the string in the documment. Forward search
?whatever - reverse search. n will now search back
shift + n n - go to previous / next match
ggn Gn - go to first / last match
* # - searches for next / previous ocurrence of current word
Replace something
:%s/original_string/new_string/gc - replaces original_string for new_string
g is do this for all matches
c is interactive mode
Delete something
:-6-4d deletes from the relative line -6 to -4
di" when run inside two " it will delete the content between them.
dt. delete from my position until the next .
df. delete from my position until, and including, the next .
Copy and paste
:-6,-4co. copies from the relative lines -6 to -4 into your current position
shift + v select whole lines
y / d copy / cut
P / p paste before / after the cursor
Insert a same character across multiple lines
This inserts text into multiple positions in a column which is all the same in a vertical position
- move the cursor to the position to insert text into
- enter visual block mode
ctrl v - press
3j - press capital i
I - type what you want to write
esc
Reference(s)
https://www.youtube.com/watch?v=l8iXMgk2nnY
https://www.youtube.com/watch?v=1alWK5ByNMc
https://stackoverflow.com/questions/9549729/vim-insert-the-same-characters-across-multiple-lines