▼/? Cursor ▽/? Target
┌───────────── |
├───────────── 0 $ ──────────────┐
│ ┌────────── ^ fe ────────┐ │
│ │ ┌─────── Fo te ───────┐│ │
│ │ │┌────── To 30| ───┐ ││ │
│ │ ││ ┌──── ge w ───┐ │ ││ │
│ │ ││ │ ┌── b e ─┐ │ │ ││ │
│ │ ││ │ │ ┌h l┐ │ │ │ ││ │
▽ ▽ ▽▽ ▽ ▽ ▽▼ ▼▽ ▽ ▽ ▽ ▽▽ ▽
echo "A cheatsheet from quickref.me"
- SCREEN 1 START
┌─┬─────────? #!/usr/bin/python
│ │ ┌───?
│ │ │ print("Hello")
│ │ { } ? print("Vim")
│ │ │ print("!")
│ │ └─?
│ │ ┌───┬───? print("Welcome")
G gg H M L k j ? print("to")
│ │ └─? print("quickref.me")
│ │ print("/vim")
│ │
│ └─────?
│ - SCREEN 1 END
└──────────────? print("SCREEN 2")
h | j | k | l |
方向鍵 |
<C-u> / <C-d> |
上/下半頁 |
<C-b> / <C-f> |
向上/向下翻頁 |
b / w |
上一個/下一個單詞 |
ge / e |
上一個/下一個詞尾 |
0 (零) / $ |
行開始/結束 |
^ |
行首(非空白) |
Fe / fe |
移至上一個/下一個 e |
To / to |
在上一個/下一個之前/之后移動 o |
| / n| |
轉到第一/n 第列 |
gg / G |
第一行/最后一行 |
:n | nG |
去線 n |
} / { |
下一個/上一個空行 |
H / M / L |
上/中/下屏幕 |
zt / zz / zb |
這條線的頂部/中心/底部 |
i / a |
在光標前/后插入 |
I / A |
插入行首/行尾 |
o / O (字母) |
在下方/上方插入新行 |
s / S |
刪除字符/行并插入 |
C |
更改為行尾 |
gi |
在最后一個插入點插入 |
Esc | <C-[> |
退出插入模式 |
:w |
節(jié)省 |
:q |
關閉文件 |
:wq | :x | ZZ |
保存并退出 |
:wqa |
保存并退出所有文件 |
:q! | ZQ |
強制退出 |
:qa |
關閉所有文件 |
:qa! |
強制退出所有文件 |
:w new.txt |
寫給 new.txt |
:sav new.txt |
保存和編輯 new.txt |
:w !sudo tee % |
寫入只讀文件 |
r |
替換一個字符 |
R |
進入替換模式 |
u / 3u |
撤消更改1 /3 次數(shù) |
U |
在一行上撤消更改 |
J |
加入下一行 |
<C-r> / 5<C-r> |
重做更改1 /5 次數(shù) |
x |
刪除字符(剪切) |
p / P |
粘貼之后/之前 |
xp |
交換兩個字符 |
D |
刪除到行尾(剪切) |
dw |
刪除單詞(剪切) |
dd |
刪除線(剪切) |
ddp |
交換兩行 |
yy |
揚克線(復?。?/font> |
"*p | "+p |
從系統(tǒng)剪貼板粘貼 |
"*y | "+y |
粘貼到系統(tǒng)剪貼板 |
d | x |
刪除選擇 (剪切) |
s |
替換選擇 |
y |
Yank 選擇(復制) |
. |
重復上一個命令 |
; |
重復最近的f , t ,F 或T |
, |
重復上次的f ,t ,F 或T 逆轉 |
& |
最后重復 :s |
@: |
重復命令行命令 |
v |
進入視覺模式 |
V |
進入視線模式 |
<C-v> |
進入視覺塊模式 |
ggVG |
選擇所有文本 |
> / < |
向右/向左移動文本 |
qi |
錄制宏 i |
q |
停止錄制宏 |
@i |
運行宏 i |
7@i |
運行宏i 7 次 |
@@ |
重復上一個宏 |
d |
刪除 |
y |
揚克(復制) |
c |
更改(刪除然后插入) |
p |
粘貼 |
= |
格式代碼 |
g~ |
切換案例 |
gU |
大寫 |
gu |
小寫 |
> |
縮進權 |
< |
向左縮進 |
! |
通過外部程序過濾 |
? ? |
刪除當前行 |
? ? |
刪除兩行 |
? ? |
刪除到下一個單詞 |
? ? |
刪除到詞首 |
? ? |
刪除直到a 字符 |
? ? |
刪除直到 hello |
? ? |
更改當前行 |
? ? |
復制當前行 |
? ? |
縮進 2 行 |
?gg ? |
刪除一個完整的文檔 |
?gg ? |
縮進完整的文檔 |
?gg ? |
復制整個文檔 |
[count] <operator> <motion>
<operator> [count] <motion>
?2 ? |
刪除2 行 |
?6 ? |
復制6 行 |
? ? |
刪除3 單詞 |
? ? |
5 向下刪除行 |
? ? |
4 向上縮進線 |
v |
|
|
Operator(操作符) |
Text object(文本對象) |
在文本塊內部或周圍使用運算符操作
?p ? |
段落 |
?w ? |
單詞 |
?W ? |
WORD (由空格包圍) |
?s ? |
句子 |
? ? |
[]、() 或 {} 塊 |
? ? |
[]、() 或 {} 塊 |
? ? |
帶引號的字符串 |
b ? |
一個塊 [( |
B ? |
[{ 中的一個塊 |
t ? |
一個 HTML 標簽塊 |
看 :help text-objects
???diw ??? |
刪除內詞 |
??dis? ? |
刪除內句 |
??di? ? |
在引號中刪除 |
??da? ? |
在引號中刪除(包括引號) |
??dip? ? |
刪除一個段落 |
? ? |
選擇內引號“ ... ” |
? ? |
選擇引號 "..." |
? ? |
選擇內括號 [ ... ] |
? ? |
選擇括號 [...] |
viw |
選擇內詞 |
vip |
選擇內部段落 |
vipip |
選擇更多段落 |
ciw |
改變內在的話 |
??ci? ? |
更改內部引號 |
cit |
更改內部標簽 (HTML) |
cip |
更改內部段落 |
yip |
拉取內段 |
ysp |
Yank 段落(包括換行符) |
:e file |
在新緩沖區(qū)中編輯文件 |
:bn |
轉到下一個緩沖區(qū) |
:bp |
轉到上一個緩沖區(qū) |
:bd |
從緩沖區(qū)列表中刪除文件 |
:b 5 |
打開緩沖區(qū) #5 |
:b file |
按文件轉到緩沖區(qū) |
:ls |
列出所有打開的緩沖區(qū) |
:sp file |
打開和拆分窗口 |
:vs file |
打開和垂直拆分窗口 |
:hid |
隱藏此緩沖區(qū) |
:wn |
寫入文件并移至下一個 |
:tab ba |
將所有緩沖區(qū)編輯為選項卡 |
<C-w> s |
拆分窗口 |
<C-w> v |
垂直拆分窗口 |
<C-w> w |
切換窗口 |
<C-w> q |
退出窗口 |
<C-w> T |
進入新標簽頁 |
<C-w> x |
與下一個交換當前 |
<C-w> - / + |
降低/增加高度 |
<C-w> < / > |
減少/增加寬度 |
<C-w> | |
最大寬度 |
<C-w> = |
同樣高寬 |
<C-w> h / l |
轉到左/右窗口 |
<C-w> j / k |
轉到上/下窗口 |
:tabe [file] |
在新選項卡中編輯文件 |
:tabf [file] |
如果在新選項卡中存在則打開 |
:tabc |
關閉當前標簽 |
:tabo |
關閉其他標簽 |
:tabs |
列出所有 |
:tabr |
轉到第一個選項卡 |
:tabl |
轉到最后一個選項卡 |
:tabm 0 |
移動到位置 0 |
:tabn |
前往下一個標簽 |
:tabp |
前往上一個標簽 |
gt |
前往下一個標簽 |
gT |
前往上一個表親啊 |
2gt |
前往編號為 2 的標簽 |
/foo |
向前搜索 |
/foo\c |
向前搜索(不區(qū)分大小寫) |
?foo |
向后搜索 |
/\v\d+ |
使用正則表達式搜索 |
n |
下一個匹配的搜索模式 |
N |
上一場匹配 |
* |
向前搜索當前詞 |
# |
向后搜索當前詞 |
:[range]s/{pattern}/{str}/[flags]
:s/old/new |
先更換 |
:s/old/new/g |
全部替換 |
:s/\vold/new/g |
全部替換為正則表達式 |
:s/old/new/gc |
全部替換(確認) |
:s/old/new/i |
先忽略大小寫替換 |
:2,6s/old/new/g |
在行之間替換2 -6 |
:%s/{pattern}/{str}/[flags]
:%s/old/new |
先更換 |
:%s/old/new/g |
全部替換 |
:%s/old/new/gc |
全部替換(確認) |
:%s/old/new/gi |
全部替換(忽略大小寫) |
:%s/\vold/new/g |
全部替換為正則表達式 |
% |
整個文件 |
’<,’> |
當前選擇 |
5 |
線 5 |
5,10 |
行5 至10 |
$ |
最后一行 |
2,$ |
行2 到最后 |
. |
當前線路 |
,3 |
下一3 行 |
-3, |
前鋒3 線 |
:[range]g/{pattern}/[command]
:g/foo/d |
刪除包含的行 foo |
:g!/foo/d |
刪除不包含的行 foo |
:g/^\s*$/d |
刪除所有空行 |
:g/foo/t$ |
復制包含foo 到 EOF 的行 |
:g/foo/m$ |
移動包含foo 到 EOF 的行 |
:g/^/m0 |
反轉文件 |
:g/^/t. |
復制每一行 |
:[range]v/{pattern}/[command]
:v/foo/d |
刪除不包含foo (也 :g!/foo/d )的行 |
g |
替換所有出現(xiàn) |
i |
忽略大小寫 |
I |
不要忽略大小寫 |
c |
確認每次替換 |
& | \0 |
替換為整個匹配 |
\1 ...\9 |
替換為 0-9 組 |
\u |
大寫下一個字母 |
\U |
大寫以下字符 |
\l |
小寫下一個字母 |
\L |
小寫以下字符 |
\e |
結束\u , \U ,\l 和\L |
\E |
結束\u , \U ,\l 和\L |
:s/a\|b/xxx\0xxx/g # Modifies "a b" to "xxxaxxx xxxbxxx"
:s/test/\U& file/ # Modifies "test" to "TEST FILE"
:s/\(test\)/\U\1\e file/ # Modifies "test" to "TEST file"
:s/\v([abc])([efg])/\2\1/g # Modifies "af fa bg" to "fa fa gb"
:s/\v\w+/\u\0/g # Modifies "bla bla" to "Bla Bla"
:s/\v([ab])|([cd])/\1x/g # Modifies "a b c d" to "ax bx x x"
:%s/.*/\L&/ # Modifies "HTML" to "html"
:s/\v<(.)(\w*)/\u\1\L\2/g # Make every first letter of a word uppercase
:%s/^\(.*\)\n\1/\1/ # Remove duplicate lines
:%s/<\/\=\(\w\+\)\>/\U&/g # Convert HTML-Tags to uppercase
:g/^pattern/s/$/mytext # Find and append text to the end
:g/pattern/norm! @i # Run a macro on matching lines
/^\(.*\)\(\r\?\n\1\)\+$ # View the duplicates lines
/\v^(.*)(\r?\n\1)+$ # View the duplicates lines (very magic)
:v/./,/./-j # Compress blank lines into a blank line
:g/<p1>/,/<p2>/d # Delete inclusively from <p1> to <p2>
$ vimdiff file1 file2 [file3]
$ vim -d file1 file2 [file3]
:[range]diffget [bufspec]
:[range]diffput [bufspec]
do / :diffget |
獲得(get)差異 |
dp / :diffput |
區(qū)分差異 |
:dif |
重新掃描差異 |
:diffo |
關閉差異模式 |
:1,$+1diffget |
獲取所有差異 |
ZQ |
退出而不改變 |
請參閱:范圍
zo / zO |
打開 |
zc / zC |
關閉 |
za / zA |
切換 |
zv |
為這條線打開折疊 |
zM |
關閉所有 |
zR |
全部打開 |
zm |
折疊更多(foldlevel += 1) |
zr |
減少折疊(foldlevel -= 1) |
zx |
更新折疊 |
]c |
下一個區(qū)別 |
[c |
以前的區(qū)別 |
vU |
大寫字符 |
vu |
小寫字符 |
~ |
切換大小寫字符 |
viw U |
大寫單詞 |
viw u |
小寫單詞 |
viw ~ |
切換大小寫單詞 |
VU / gUU |
大寫行 |
Vu / guu |
小寫行 |
V~ / g~~ |
切換案例行 |
gggUG |
大寫所有文本 |
ggguG |
小寫所有文本 |
ggg~G |
切換大小寫 所有文本 |
<C-o> |
返回上一個 |
<C-i> |
直走 |
gf |
轉到光標中的文件 |
ga |
顯示十六進制、ASCII 值 |
:h |
幫助 打開幫助視圖 |
:edit! |
重新加載當前文件 |
:2,8m0 |
移動線2 -8 到0 |
:noh |
清除搜索亮點 |
:sort |
排序線 |
:ter |
打開終端窗口 |
:set paste |
啟用插入粘貼子模式 |
:set nopaste |
禁用插入粘貼子模式 |
:cq |
出現(xiàn)錯誤退出 (中止 Git) |
% |
最近/匹配 {[()]} |
[( | [{ | [< |
上一個( ,{ 或< |
]) | ]{ | ]> |
下一個) ,} 或> |
[m |
上一個方法開始 |
[M |
上一個方法結束 |
<C-a> |
增加數(shù)量 |
<C-x> |
減少數(shù)量 |
:tag Classname |
跳轉到 Classname 的第一個定義 |
<C-]> |
跳轉到定義 |
g] |
查看所有定義 |
<C-t> |
返回上一個標簽 |
<C-o> <C-i> |
后退前進 |
:tselect Classname |
查找 Classname 的定義 |
:tjump Classname |
查找類名的定義(自動選擇第一個) |
:ce 8 |
8 列之間的中心線 |
:ri 4 |
在4 列處右對齊行 |
:le |
左對齊線 |
看 :help formatting
`^ |
插入模式下光標的最后位置 |
`. |
當前緩沖區(qū)的最后更改 |
`" |
最后退出的當前緩沖區(qū) |
`0 |
在上次編輯的文件中 |
'' |
返回當前緩沖區(qū)中跳轉的行 |
`` |
返回當前緩沖區(qū)中跳轉的位置 |
`[ |
到先前更改或猛拉的文本的開頭 |
`] |
結束先前更改或猛拉的文本 |
`< |
到最后一個視覺選擇的開始 |
`> |
到最后一個視覺選擇結束 |
ma |
將此光標位置標記為 a |
`a |
跳轉到光標位置 a |
'a |
跳到帶有位置的行的開頭 a |
d'a |
從當前行刪除到標記行 a |
d`a |
從當前位置刪除到標記位置 a |
c'a |
將文本從當前行更改為 a |
y`a |
將文本從當前位置拉到 a |
:marks |
列出所有當前標記 |
:delm a |
刪除標記 a |
:delm a-d |
刪除標記a , b , c ,d |
:delm abc |
刪除標記a , b ,c |
<C-r> = 7*7 |
顯示結果 |
<C-r> = 10/2 |
顯示結果 |
在 INSERT 模式下執(zhí)行此操作
:!<shell> |
解釋 Shell 命令 |
:r!<shell> |
讀入 shell 的輸出 |
:r!date |
插入日期 |
:!!date |
用日期替換當前行 |
<C-r><C-w> |
將當前單詞插入命令行 |
<C-r>" |
從“注冊”粘貼 |
<C-x><C-f> |
在插入模式下自動完成路徑 |
刪除重復行
:sort | %!uniq -u
對文件中的行進行編號
:%!cat -n
將整個文檔復制到剪貼板
:%w !pbcopy # Mac OS X
:%w !xclip -i -sel c # GNU/Linux
:%w !xsel -i -b # GNU/Linux
更多建議: