国产成人精品999视频&日本一区二区亚洲人妻精品&久久久精品国产99久久精&99热这里只有成人精品国产&精品国产剧情av一区二区&成人亚洲精品久久久久app&国产精品美女高潮抽搐A片

Vim 備忘清單

Vim 8.2 快速參考備忘單的有用集合,可幫助您更快地學(xué)習(xí) vim 編輯器。

入門

運動圖

▼/? 光標(biāo)   ▽/? 目標(biāo)

左右動作

╭┈┈┈┈┈┈┈┈┈┈┈┈┈ |      
├┈┈┈┈┈┈┈┈┈┈┈┈┈ 0      $ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈╮
┆  ╭┈┈┈┈┈┈┈┈┈┈ ^      fe ┈┈┈┈┈┈┈┈╮       ┆
┆  ┆  ╭┈┈┈┈┈┈┈ Fo     te ┈┈┈┈┈┈┈╮┆       ┆
┆  ┆  ┆╭┈┈┈┈┈┈ To     30| ┈┈┈╮  ┆┆       ┆
┆  ┆  ┆┆ ╭┈┈┈┈ ge     w ┈┈┈╮ ┆  ┆┆       ┆
┆  ┆  ┆┆ ┆ ╭┈┈ b      e ┈╮ ┆ ┆  ┆┆       ┆
┆  ┆  ┆┆ ┆ ┆  ╭h      l╮ ┆ ┆ ┆  ┆┆       ┆
▽  ▽  ▽▽ ▽ ▽  ▽▼      ▼▽ ▽ ▽ ▽  ▽▽       ▽
   echo "A cheatsheet from quickReference"

上下動作

                  - SCREEN 1 START
   ╭┈┬┈┈┈┈┈┈┈┈┈?  #!/usr/bin/python
   ┆ ┆     ╭┈┈┈?      
   ┆ ┆     ┆      print("Hello")
   ┆ ┆     { } ?  print("Vim")
   ┆ ┆       ┆    print("!")
   ┆ ┆       └┈?     
   ┆ ┆ ╭┈┈┈┬┈┈┈?  print("Welcome")
G gg H M L k j ?  print("to")
┆        ┆   └┈?  print("Quick Reference")
┆        ┆        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 (zero) / $行的開始/結(jié)束
^行開頭 (非空白)

字符串

快捷方式說明
Fe / fe移動到上一個/下一個e
To / to在上一個/下一個o之前/之后移動
| / n|轉(zhuǎn)到第一個/n

文檔

快捷方式說明
gg / G第一行/最后一行
:n | nG轉(zhuǎn)到第 n
} / {下一個/上一個空行

窗口

快捷方式說明
H / M / L上/中/下屏幕
zt / zz / zb上/中/下這條線

插入模式

快捷方式說明
i / a在光標(biāo)之前/之后插入
I / A插入行的開始/結(jié)束
o / O (letter)在下方/上方插入新行
s / S刪除字符/行并插入
C / cc更改到/當(dāng)前行的結(jié)尾
gi在最后一個插入點插入
Esc | <C-[>退出插入模式

保存和退出

快捷方式說明
:w保存
:q關(guān)閉文件
:wq | :x | ZZ保存并退出
:wqa保存并退出所有文件
:q! | ZQ強制退出
:qa關(guān)閉所有文件
:qa!強制退出所有文件
:w new.txt寫入new.txt
:sav new.txt保存并編輯new.txt
:w !sudo tee %寫入只讀文件

正常模式

快捷方式說明
r替換一個字符
R進入替換模式
u / 3u撤消更改1/3
U在一行上撤消更改
J加入下一行
<C-r> / 5 <C-r>重做更改1/5

剪切和粘貼

快捷方式說明
x刪除字符 (剪切)
p / P在之后/之前粘貼
xp交換兩個字符
D刪除到行尾 (剪切)
dw刪除單詞 (剪切)
dd刪除線 (剪切)
ddp交換兩條線
yy拉線 (復(fù)制)
"*p | "+p從系統(tǒng)剪貼板粘貼
"*y | "+y粘貼到系統(tǒng)剪貼板

在可視化模式下

快捷方式說明
d | x刪除選擇 (剪切)
s替換選擇
yYank 選擇 (復(fù)制)

重復(fù)

快捷方式說明
.重復(fù)上一個命令
;重復(fù)最新的 f、t、FT
,重復(fù)最新的ft、FT顛倒
&重復(fù)最后一個:s
@:重復(fù)命令行命令

可視化模式

快捷方式說明
v進入可視化模式
V進入視線模式
<C-v>進入可視化阻擋模式
ggVG選擇所有文本
> / <向右/向左移動文本

:--
qi錄制宏 i
q停止錄制宏
@i運行宏i
7@i運行宏 i 7 次
@@重復(fù)上一個宏

您可以為任何字母保存宏,而不僅僅是 i

Vim 運算符

用法

快捷方式說明
dw
運算符動作

可用運算符動作 結(jié)合使用以使用它們

可用運算符

快捷方式說明
d刪除
yYank (復(fù)制)
c更改 (刪除然后插入)
p粘貼
=格式代碼
g~切換案例
gU大寫
gu小寫
>右縮進
<左縮進
!通過外部程序過濾

例子

組合說明
dd刪除當(dāng)前行
dj刪除兩行
dw刪除到下一個單詞
db刪除到單詞的開頭
dfa刪除直到 a 字符
d/hello刪除直到 hello
cc更改當(dāng)前行,與 S 同義
yy復(fù)制當(dāng)前行
>j縮進 2 行
ggdG刪除完整的文檔
gg=G縮進一個完整的文檔
ggyG復(fù)制整個文檔

計數(shù)

[數(shù)字] <運算符> <動作>
<運算符> [數(shù)字] <動作>

組合說明
2dd刪除 2
6yy復(fù)制 6
d3w刪除 3
d5j向下刪除 5
>4k向上縮進 4

Vim 文本對象

用法

快捷方式說明
v? ? ? ? i / a
Operatorinner(內(nèi)部) / around(周圍)

文本塊內(nèi)部或周圍使用 operator 進行操作

文本對象

快捷方式說明
p段落
w單詞
WWORD
(被空格包圍)
s句子
[ ( { <[]、() 或 {} 塊
] ) } >[]、() 或 {} 塊
' " `帶引號的字符串
b一個塊 [(
B[{中的一個塊
t一個 HTML 標(biāo)簽塊

查看 :help text-objects

刪除

快捷方式說明
diw刪除內(nèi)詞
dis刪除內(nèi)句
di"引號中刪除
da"刪除引號 (包括引號)
dip刪除段落

選擇

快捷方式說明
vi"選擇內(nèi)引號“...{.underline}”
va"選擇引號"..."{.underline}
vi[選擇內(nèi)括號 [...{.underline}]
va[選擇括號[...]{.underline}
viw選擇內(nèi)詞
vip選擇內(nèi)部段落
vipip選擇更多段落

雜項

快捷方式說明
ciw換內(nèi)字
ci"更改內(nèi)部引號
cit更改內(nèi)部標(biāo)簽 (HTML)
cip更改內(nèi)部段落
yipYank 段落
yapYank 段落 (包括換行符)

Vim 多個文件

Buffers (緩沖器)

:--
:e file在新緩沖區(qū)中編輯文件
:bn轉(zhuǎn)到下一個緩沖區(qū)
:bp轉(zhuǎn)到上一個緩沖區(qū)
:bd從緩沖區(qū)列表中刪除文件
:b 5打開緩沖區(qū) #5
:b file按文件轉(zhuǎn)到緩沖區(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拆分成一個新標(biāo)簽
<C-w> x用下一個交換當(dāng)前
<C-w> - / +減少/增加高度
<C-w> < / >減少/增加寬度
<C-w> |最大寬度
<C-w> =同樣高和寬
<C-w> h / l轉(zhuǎn)到左/右窗口
<C-w> j / k轉(zhuǎn)到上/下窗口

選項卡

快捷方式說明
:tabe [file]E在新選項卡中編輯文件
:tabf [file]如果在新選項卡中存在則打開
:tabcC失去當(dāng)前選項卡
:tabo關(guān)閉o其他選項卡
:tabs列出所有標(biāo)簽
:tabr轉(zhuǎn)到第一個r標(biāo)簽
:tabl轉(zhuǎn)到 last 選項卡
:tabm 0轉(zhuǎn)到位置 0
:tabn轉(zhuǎn)到 next 選項卡
:tabp轉(zhuǎn)到p上一個標(biāo)簽

正常模式

快捷方式說明
gt轉(zhuǎn)到 next 選項卡
gT轉(zhuǎn)到p上一個標(biāo)簽
2gt轉(zhuǎn)到標(biāo)簽編號 2

Vim 搜索和替換

搜索

:--
/foo向前搜索
/foo\c向前搜索 (不區(qū)分大小寫)
?foo向后搜索
/\v\d+使用 regex 搜索
n下一個匹配的搜索模式
N上一個匹配的搜索
*向前搜索當(dāng)前單詞
#向后搜索當(dāng)前單詞

更換行

:[range]s/{pattern}/{str}/[flags]

:--
:s/old/new先更換
:s/old/new/g全部替換
:s/\vold/new/g全部替換為 regex
:s/old/new/gc全部替換_(確認)_
:s/old/new/i先忽略大小寫替換
:2,6s/old/new/g2-6 行之間替換

替換文件

:%s/{pattern}/{str}/[flags]

:--
:%s/old/new先更換
:%s/old/new/g全部替換
:%s/old/new/gc全部替換 (確認)
:%s/old/new/gi全部替換 (忽略大小寫)
:%s/\vold/new/g全部替換為 regex

范圍

:--
%整個文件
’<,’>當(dāng)前選擇
55
5,105 行到第 10
$最后一行
2,$2 行到最后
.當(dāng)前行
,3接下來的 3
-3,轉(zhuǎn)發(fā) 3

全局命令

:[range]g/{pattern}/[command]

:--
:g/foo/d刪除包含 foo 的行
:g!/foo/d刪除不包含 foo 的行
:g/^\s*$/d刪除所有空行
:g/foo/t$將包含 foo 的行復(fù)制到 EOF
:g/foo/m$將包含 foo 的行移動到 EOF
:g/^/m0反轉(zhuǎn)文件
:g/^/t.復(fù)制每一行

Inverse(逆) :g

:[range]v/{pattern}/[command]

:--
:v/foo/d刪除不包含foo的行
(還有:g!/foo/d)

Flags(標(biāo)志)

:--
g替換所有出現(xiàn)
i忽略大小寫
I不要忽略大小寫
c確認每個替換

替換表達式(魔術(shù))

:--
& | \0替換為整個匹配的
\1...\9替換為 0-9 組
\u大寫下一個字母
\U后面的大寫字符
\l小寫下一個字母
\L后面的字符小寫
\e\u、\U、\l\L 的結(jié)尾
\E\u、\U、\l\L 的結(jié)尾

例子

:s/a\|b/xxx\0xxx/g               # 將 "a b"      修改為 "xxxaxxx xxxbxxx"
:s/test/\U& file/                # 將 "test"     修改為 "TEST FILE"
:s/\(test\)/\U\1\e file/         # 將 "test"     修改為 "TEST file"
:s/\v([abc])([efg])/\2\1/g       # 將 "af fa bg" 修改為 "fa fa gb"
:s/\v\w+/\u\0/g                  # 將 "bla bla"  修改為 "Bla Bla"
:s/\v([ab])|([cd])/\1x/g         # 將 "a b c d"  修改為 "ax bx x x"
:%s/.*/\L&/                      # 將 "HTML"     修改為 "html"
:s/\v<(.)(\w*)/\u\1\L\2/g        # 將單詞的每個首字母大寫
:%s/^\(.*\)\n\1/\1/              # 刪除重復(fù)行
:%s/<\/\=\(\w\+\)\>/\U&/g        # 將 HTML 標(biāo)記轉(zhuǎn)換為大寫
:g/^pattern/s/$/mytext           # 查找文本并將其附加到末尾
:g/pattern/norm! @i              # 在匹配行上運行宏
/^\(.*\)\(\r\?\n\1\)\+$          # 查看重復(fù)行
/\v^(.*)(\r?\n\1)+$              # 查看重復(fù)行(非常神奇)
:v/./,/./-j                      # 將空行壓縮成空行
:g/<p1>/,/<p2>/d                 # 從 <p1> 到 <p2> 包含刪除

Vimdiff

用法

$ vimdiff file1 file2 [file3]
$ vim -d file1 file2 [file3]

編輯

:[range]diffget [bufspec]
:[range]diffput [bufspec]

快捷方式說明
do / :diffget獲取(get)差異
dp / :diffput放差價
:dif重新掃描差異
:diffo關(guān)閉差異模式
:1,$+1diffget獲取所有差異
ZQ不做改動就退出

請參閱:范圍

折疊

快捷方式說明
zo / zO打開
zc / zC關(guān)
za / zA切換
zv這條線的打開折疊
zM關(guān)閉所有
zR打開所有
zm折疊更多 (折疊級別 += 1)
zr少折疊 (折疊級別 -= 1)
zx更新折疊

跳躍

快捷方式說明
]c下一個區(qū)別
[c以前的區(qū)別

各種各樣的

Case

快捷方式說明
vU大寫 字母
vu小寫 字符
~切換案例 字符
viw U大寫
viw u小寫
viw ~切換案例
VU / gUU大寫
Vu / guu小寫
V~ / g~~切換案例
gggUG大寫 所有文本
ggguG小寫 所有文本
ggg~G切換大小寫 所有文本

跳躍

快捷方式說明
<C-o>返回上一個
<C-i>向前
gf轉(zhuǎn)到光標(biāo)中的文件
ga顯示十六進制、ASCII值

其他命令行

:--
:h幫助打開幫助視圖
:edit!重新加載當(dāng)前文件
:2,8m0將行 2-8 移動到 0
:noh清除搜索亮點
:sort排序行
:ter打開終端窗口
:set paste啟用插入粘貼子模式
:set nopaste禁用插入粘貼子模式
:cq退出并出現(xiàn)錯誤
(正在中止 Git)

導(dǎo)航

快捷方式說明
%最近/匹配的{[()]}
[( | [{上一個 ({
]) | ]{下一個)}
[m上一個方法開始
[M上一個方法結(jié)束

計數(shù)器

快捷方式說明
<C-a>增加數(shù)量
<C-x>減少數(shù)量

選項卡

快捷方式說明
:tag Classname跳轉(zhuǎn)到 Classname 的第一個定義
<C-]>跳轉(zhuǎn)到定義
g]查看所有定義
<C-t>回到最后一個標(biāo)簽
<C-o> <C-i>后退前進
:tselect Classname查找類名的定義
:tjump Classname查找類名的定義 (自動選擇第一個)

格式化

:--
:ce 88 列之間的中心線
:ri 44 列右對齊行
:le左對齊線

查看 :help formatting

標(biāo)記

快捷方式說明
`^插入模式下光標(biāo)的最后位置
`.當(dāng)前緩沖區(qū)的最后更改
`"最后退出的當(dāng)前緩沖區(qū)
`0在上次編輯的文件中
''返回當(dāng)前緩沖區(qū)中跳出的行
``返回當(dāng)前緩沖區(qū)中跳轉(zhuǎn)的位置
`[到先前更改或拉出的文本的開頭
`]到之前更改或拉出的文本的結(jié)尾
`<到最后一個可視化選擇的開始
`>到最后一個可視化選擇的結(jié)尾
ma將此光標(biāo)位置標(biāo)記為a
`a跳轉(zhuǎn)到光標(biāo)位置a
'a跳轉(zhuǎn)到位置為 a 的行首
d'a從當(dāng)前行刪除到標(biāo)記 a 的行
d`a從當(dāng)前位置刪除到標(biāo)記 a 的位置
c'a將文本從當(dāng)前行更改為 a
y`a將文本從當(dāng)前位置拉到 a 的位置
:marks列出所有當(dāng)前標(biāo)記
:delm a刪除標(biāo)記a
:delm a-d刪除標(biāo)記ab、c、d
:delm abc刪除標(biāo)記a、b、c

計算器

快捷方式說明
<C-r> = 7*7顯示結(jié)果
<C-r> = 10/2顯示結(jié)果

在 INSERT 模式下執(zhí)行此操作

Shell

:--
:!<shell>解釋 Shell 命令
:r!<shell>讀入shell的輸出
:r!date插入日期
:!!date用日期替換當(dāng)前行

命令行

快捷方式說明
<C-r><C-w>將當(dāng)前單詞插入命令行
<C-r>"注冊 粘貼
<C-x><C-f>在插入模式下自動完成路徑

技巧

刪除重復(fù)行

:sort | %!uniq -u

對文件中的行進行編號

:%!cat -n

將整個文檔復(fù)制到剪貼板

:%w !pbcopy            # Mac OS X
:%w !xclip -i -sel c   # GNU/Linux
:%w !xsel -i -b        # GNU/Linux

理解 Vim

動詞理解

d  # 表示刪除delete
r  # 表示替換replace
c  # 表示修改change
y  # 表示復(fù)制yank
v  # 表示選取visual select

動詞代表了我們打算對文本進行什么樣的操作

名詞理解

w  # 表示一個單詞word
s  # 表示一個句子sentence
p  # 表示一個段落paragraph
t  # 表示一個 HTML 標(biāo)簽tag

名詞代表了我們即將處理的文本。引號或者各種括號所包含的文本稱作一個文本塊。

介詞理解

i  # 表示在...之內(nèi) inside
a  # 表示環(huán)繞... around
t  # 表示到...位置前 to
f  # 表示到...位置上 forward

介詞界定了待編輯文本的范圍或者位置。

數(shù)詞理解

數(shù)詞指定了待編輯文本對象的數(shù)量,從這個角度而言,數(shù)詞也可以看作是一種介詞。引入數(shù)詞之后,文本編輯命令的語法就升級成了下面這樣:

動詞 介詞/數(shù)詞 名詞

下面是幾個例子:

c3w  # 修改三個單詞:change three words
d2w  # 刪除兩個單詞:delete two words

另外,數(shù)詞也可以修飾動詞,表示將操作執(zhí)行 n 次。于是,我們又有了下面的語法:

數(shù)詞 動詞 名詞

示例

2dw # 兩次刪除單詞(等價于刪除兩個單詞): twice delete word
3x  # 三次刪除字符(等價于刪除三個字符): three times delete character

組詞為句理解

有了這些基本的語言元素,我們就可以著手構(gòu)造一些簡單的命令了。文本編輯命令的基本語法如下:

動詞 介詞 名詞

下面是一些例子

dip # 刪除一個段落: delete inside paragraph
vis # 選取一個句子: visual select inside sentence
ciw # 修改一個單詞: change inside word
caw # 修改一個單詞: change around word
dtx # 刪除文本直到字符“x”(不包括字符“x”): delete to x
dfx # 刪除文本直到字符“x”(包括字符“x”): delete forward x

另見