Awesome
Practical-Vim-Notes
1. The Vim Way
- Tip 1. Meet the Dot Command:
.
, x
, u
, dd
, >G
, i
, <Esc>
- Tip 2. Don’t Repeat Yourself:
$
, a
, A
- Tip 3. Take One Step Back, Then Three Forward:
f{char}
, s
, ;
- Tip 4. Act, Repeat, Reverse:
F{char}/T{char}
, /pattern<CR>
, :s/target/replacement
- Tip 5. Find and Replace by Hand:
/target
, *
, *nn
, cw
- Tip 6. Meet the Dot Formula: One key to move, One key to execute
Part I — Modes
2. Normal Mode
- Tip 7. Pause with Your Brush Off the Page
- Tip 8. Chunk Your Undos
- Tip 9. Compose Repeatable Changes:
db
, b
, dw
, daw
- Tip 10. Use Counts to Do Simple Arithmetic:
<C-a>
, <C-x>
, yyp
, cw
, cW
- Tip 11. Don’t Count If You Can Repeat:
d2w/W
, 2dw/W
, dw.
- Tip 12. Combine and Conquer:
gu
, gU
, y
, d
, c
, =
3. Insert Mode
- Tip 13. Make Corrections Instantly from Insert Mode:
<C-h>
, <C-w>
, <C-u>
- Tip 14. Get Back to Normal Mode:
<Esc>
, <C-[>
, <C-o>
, zz
- Tip 15. Paste from a Register Without Leaving Insert Mode:
yt,
, <C-r>0
- Tip 16. Do Back-of-the-Envelope Calculations in Place:
<C-r>=
- Tip 17. Insert Unusual Characters by Character Code:
ga
, <C-v>
, <C-k
- Tip 18. Insert Unusual Characters by Digraph:
<C-k>{char1}{char2}
- Tip 19. Overwrite Existing Text with Replace Mode:
R
, gR
, r
, gr
4. Visual Mode
- Tip 20. Grok Visual Mode:
viw
, c
- Tip 21. Define a Visual Selection:
v
, V
, <C-v>
, gv
, o
, e
- Tip 22. Repeat Line-Wise Visual Commands:
<
, >
- Tip 23. Prefer Operators to Visual Commands Where Possible:
vit
, U
- Tip 24. Edit Tabular Data with Visual-Block Mode:
3j
, r
, yyp
- Tip 25. Change Columns of Text:
- Tip 26. Append After a Ragged Visual Block:
$
5. Command-Line Mode
- Tip 27. Meet Vim’s Command Line:
:
, <C-w><C-u>
, <C-v><C-k>
, <C-r>{register}
- Tip 28. Execute a Command on One or More Consecutive Lines:
:print
, :digit
, :$
, :3p
, :3d
, :2,5p
, .
, :%p
, :%s/old/new/
, '<
, '>
, :/<html>/,/<\/html>/p
- Tip 29. Duplicate or Move Lines Using ‘:t’ and ‘:m’ Commands:
:copy :co :t
, :move :m
, dGp
- Tip 30. Run Normal Mode Commands Across a Range:
:normal
, %normal A;
, %normal i//
- Tip 31. Repeat the Last Ex Command:
:@:
, :@@
, :bn[ext]
, :bp[revious]
, <C-o>
- Tip 32. Tab-Complete Your Ex Commands:
:col<C-d>
- Tip 33. Insert the Current Word at the Command Prompt:
<C-r><C-w>
- Tip 34. Recall Commands from History:
q:
, <C-f>
- Tip 35. Run Commands in the Shell:
:!ls
, :ls
, :!ruby %
, :shell
, <C-z>
, jobs
, fg
, :read !{cmd}
, :write !{cmd}
, :[range]!{cmd/filter}
, :2,$!sort -t',' -k2
, !{motion}
, !G
Part II — Files
6. Manage Multiple Files
- Tip 36. Track Open Files with the Buffer List:
:bnext
, :ls
, <C-^>
, :bprev
, :bfirst
, :blast
, :buffer N
, :buffer {bufname}
, :bufdo
, :argdo
, :bd[elete]
- Tip 37. Group Buffers into a Collection with the Argument List:
:args {arglist}
- Tip 38. Manage Hidden Files:
:wirte
, :edit!
, qall!
, :wall
,
- Tip 39. Divide Your Workspace into Split Windows:
<C-w>s
, <C-w>v
, :edit
, :close
, :only
- Tip 40. Organize Your Window Layouts with Tab Pages:
:lcd{path}
, :tabe[dit] {filename}
, :tabmove [N]
-
7. Open Files and Save Them to Disk
- Tip 41. Open a File by Its Filepath Using ':edit':
:edit %<Tab>
, :edit %:h<Tab>
- Tip 42. Open a File by Its Filename Using ':find':
:find
, :set path+=app/**
- Tip 43. Explore the File System with netrw:
:edit .
, :e.
, :Explore
, :E.
- Tip 44. Save Files to Nonexistent Directories:
<C-g>
, :!mkdir -p %:h
- Tip 45. Save a File as the Super User:
:w !sudo tee % > /dev/null
Part III — Getting Around Faster
8. Navigate Inside Files with Motions
- Tip 46. Keep Your Fingers on the Home Row:
h,j,k,l
- Tip 47. Distinguish Between Real Lines and Display Lines:
gj
, gk
, g0
, g$
, g^
- Tip 48. Move Word-Wise:
w
, b
, e
, ge
, ea
, gea
, W
, cW
- Tip 49. Find by Character:
f{char}
, ;
, ,
, F{char}
, t{char}
, T{char}
, dt.
- Tip 50. Search to Navigate:
/{char}
, n
, N
- Tip 51. Trace Your Selection with Precision Text Objects:
vi}
, a"
, i"
, at
, it
- Tip 52. Delete Around, or Change Inside:
iw
, iW
, is
, ip
, aw
, aW
, as
, ap
- Tip 53. Mark Your Place and Snap Back to It:
m{a-zA-Z}
, '{mark}
- Tip 54. Jump Between Matching Parentheses:
%
, S"
9. Navigate Between Files with Jumps
Part IV — Registers
10. Copy and Paste
- Tip 59. Delete, Yank, and Put with Vim’s Unnamed Register:
x
, p
, xp
, dd
, ddp
, yyp
, P
, diw
- Tip 60. Grok Vim’s Registers:
"{register}
, "ayiw
, "bdd
, "ap
, "bp
, :delete c
, :put c
, ""p
, "0P
, :reg "0
, "_d{motion}
, "+
, "+p <C-r>+
- Tip 61. Replace a Visual Selection with a Register:
m{char}
, ``{char}`
- Tip 62. Paste from a Register:
<C-r>{register}
, p
, P
, gp
, gP
- Tip 63. Interact with the System Clipboard:
:set pastetoggle=<f5>
11. Macros
- Tip 64. Record and Execute a Macro:
q
, q{register}
, :reg a
, @{register}
, @@
- Tip 65. Normalize, Strike, Abort:
number@a
- Tip 66. Play Back with a Count:
qq;.q
- Tip 67. Repeat a Change on Contiguous Lines:
0
, :normal @a
- Tip 68. Append Commands to a Macro:
qa
, qA
- Tip 69. Act Upon a Collection of Files:
gg/class<CR>
, :argdo
, :edit!
, :argdo normal @a
, :argdo write
, :wall
, :wnext
- Tip 70. Evaluate an Iterator to Number Items in a List:
:let i=0
, :echo i
, <C-r>=i<CR>
- Tip 71. Edit the Contents of a Macro:
~
, vU
, :put a
Part V — Patterns
12. Matching Patterns and Literals
13. Search
- Tip 79. Meet the Search Command
- Tip 80. Highlight Search Matches
- Tip 81. Preview the First Match Before Execution
- Tip 82. Count the Matches for the Current Pattern
- Tip 83. Offset the Cursor to the End of a Search Match
- Tip 84. Operate on a Complete Search Match
- Tip 85. Create Complex Patterns by Iterating upon Search History
- Tip 86. Search for the Current Visual Selection
14. Substitution
- Tip 87. Meet the Substitute Command
- Tip 88. Find and Replace Every Match in a File
- Tip 89. Eyeball Each Substitution
- Tip 90. Reuse the Last Search Pattern
- Tip 91. Replace with the Contents of a Register
- Tip 92. Repeat the Previous Substitute Command
- Tip 93. Rearrange CSV Fields Using Submatches
- Tip 94. Perform Arithmetic on the Replacement
- Tip 95. Swap Two or More Words
- Tip 96. Find and Replace Across Multiple Files
15. Global Commands
- Tip 97. Meet the Global Command
- Tip 98. Delete Lines Containing a Pattern
- Tip 99. Collect TODO Items in a Register
- Tip 100. Alphabetize the Properties of Each Rule in a CSS File
Part VI — Tools
16. Index and Navigate Source Code with ctags
- Tip 101. Meet ctags
- Tip 102. Configure Vim to Work with ctags
- Tip 103. Navigate Keyword Definitions with Vim’s Tag Navigation Commands
17. Compile Code and Navigate Errors with the Quickfix List
- Tip 104. Compile Code Without Leaving Vim
- Tip 105. Browse the Quickfix List
- Tip 106. Recall Results from a Previous Quickfix List
- Tip 107. Customize the External Compiler
18. Search Project-Wide with grep, vimgrep, and Others
- Tip 108. Call grep Without Leaving Vim
- Tip 109. Customize the grep Program
- Tip 110. Grep with Vim’s Internal Search Engine
19. Dial X for Autocompletion
- Tip 111. Meet Vim’s Keyword Autocompletion
- Tip 112. Work with the Autocomplete Pop-Up Menu
- Tip 113. Understand the Source of Keywords
- Tip 114. Autocomplete Words from the Dictionary
- Tip 115. Autocomplete Entire Lines
- Tip 116. Autocomplete Filenames
- Tip 117. Autocomplete with Context Awareness
20. Find and Fix Typos with Vim’s Spell Checker
- Tip 118. Spell Check Your Work
- Tip 119. Use Alternate Spelling Dictionaries
- Tip 120. Add Words to the Spell File
- Tip 121. Fix Spelling Errors from Insert Mode
21. Now What?
- 21.1 Keep Practicing!
- 21.2 Make Vim Your Own
- 21.3 Know the Saw, Then Sharpen It