vim 一 · 組合

命令的性質(zhì)

單鍵命令按性質(zhì)分,可以分為操作和移動(dòng)兩種。還涉及到一個(gè)叫文本對(duì)象的概念。

  • 操作,如:

    • v 選擇
    • d 刪除
    • c 修改
    • y 復(fù)制
    • g~ 切換大小寫
    • = 格式化縮進(jìn)
    • > 添加縮進(jìn)
    • < 減少縮進(jìn)
    • p 粘貼到光標(biāo)右邊
    • P 粘貼到光標(biāo)左邊
    • i 在光標(biāo)左邊插入
    • a 在光標(biāo)右邊插入
    • I 在行首插入
    • A 在行尾插入
    • u 撤銷
    • Ctrl-r 撤銷撤銷
  • 位置,或稱移動(dòng),這些命令單獨(dú)使用的意思是「光標(biāo)移動(dòng)到某地方」。

    • hjkl 左下上右
    • w 下一個(gè)單詞開頭
    • e 下一個(gè)單詞結(jié)尾
    • b 上一個(gè)單詞開頭
    • ge 上一個(gè)單詞結(jié)尾
    • gg 文件第一行行首
    • G 文件最后一行行首
    • fx 當(dāng)前行下一個(gè) x
    • Fx 當(dāng)前行上一個(gè) x
    • tx 當(dāng)前行下一個(gè) x 之前的字符
    • Tx 當(dāng)前行上一個(gè) x 之后的字符
    • ^ 行首
    • $ 行尾
    • * 搜索下一個(gè)「光標(biāo)下的單詞」的第一個(gè)字母
    • # 搜索上一個(gè)「光標(biāo)下的單詞」的第一個(gè)字母
    • /x 搜索下一個(gè) x
    • ?x 搜索上一個(gè) x
  • 范圍,或稱文本對(duì)象(text object),是一組表示范圍的命令,只能組合使用,單獨(dú)沒有意義,關(guān)于如何組合會(huì)在下文說明。

    • iw,單詞,不包含單詞邊界
    • aw,單詞,包含單詞右邊的空格
    • i",兩個(gè)雙引號(hào)之間,不包含雙引號(hào)
    • a",兩個(gè)雙引號(hào)之間,包含雙引號(hào)
    • it,標(biāo)簽,不包含標(biāo)簽,標(biāo)簽指 html 或 xml 標(biāo)簽對(duì)兒
    • at,標(biāo)簽,包含標(biāo)簽,標(biāo)簽指 html 或 xml 標(biāo)簽對(duì)兒
    • i(i)ib,表示 () 之間,不包含小括號(hào)
    • a(a)ab,表示 () 之間,包含小括號(hào)
    • i<i>,表示 <> 之間,不包含尖括號(hào)
    • a<a>,表示 <> 之間,包含尖括號(hào)
    • i[i],表示 [] 之間,不包含中括號(hào)
    • a[a],表示 [] 之間,包含中括號(hào)
    • i{i},表示 {} 之間,不包含大括號(hào)
    • a{a},表示 {} 之間,包含大括號(hào)

命令組合方式

上面列出了許多「操作」命令,他們可以被組合使用,但并不是所有的操作命令都能組合使用。判斷是否可以組合的方法是,鍵盤輸入如 d 的命令,看他是否在等待下一個(gè)按鍵,是的話就可以按照下面的規(guī)則組合使用,否則就不行。d 是可以組合使用的操作命令,假設(shè)我定義 d 是刪除一行,我輸入 d^ 時(shí),vim 無法區(qū)分我想執(zhí)行「d 刪除一行之后再用 ^ 把光標(biāo)移動(dòng)到行首」還是想執(zhí)行「d^ 刪除到行首」,所以單獨(dú)一個(gè) d 是沒有意義的,當(dāng)輸入 d 時(shí),vim 會(huì)等待用戶按下一個(gè)按鍵。不能組合的操作命令沒有這種歧義問題,所以他不會(huì)等待下一個(gè)按鍵,比如 p 粘貼命令。

  • 操作 + 位置,意思是「進(jìn)行某操作,范圍是光標(biāo)到位置之間」。
    • dw 刪除到下一個(gè)單詞開頭
    • d^ 刪除到行首
    • v# 選擇到上一個(gè)「光標(biāo)下的單詞」的第一個(gè)字母
    • vG 選擇到文件最后一行行首
    • =G 格式化到文件最后一行
    • g~$ 切換大小寫到行尾
  • 操作 + 范圍,意思是「對(duì)某范圍執(zhí)行某操作」。
    • diw 刪除單詞,不包含單詞邊界
    • yaw 復(fù)制單詞,包含單詞右邊的空格
    • vit 選擇標(biāo)簽內(nèi)容,不包含標(biāo)簽,對(duì)于 <p>asdfghjkl</p> 會(huì)選擇 asdfghjkl
    • vat 選擇標(biāo)簽內(nèi)容,包含標(biāo)簽,對(duì)于 <p>asdfghjkl</p> 會(huì)選擇 <p>asdfghjkl</p>
    • =a{ 格式化大括號(hào)之間的行縮進(jìn),包含大括號(hào)所在的行
    • gUiw 把單詞變成大寫

可以看出 vim 中如 w 的命令在不同組合下有不同的意思,單獨(dú)使用 w 代表光標(biāo)移動(dòng)到下個(gè)詞首,dw 代表刪除到下個(gè)詞首,daw 代表刪除這個(gè)單詞和多余的空格。雖然意思有些許不同,但 w 總是代表單詞,這很直觀,不需要特別記憶,甚至不需要特別注意,下意識(shí)就學(xué)會(huì)怎么用了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 命令歷史 以:和/開頭的命令都有歷史紀(jì)錄,可以首先鍵入:或/然后按上下箭頭來選擇某個(gè)歷史命令。 啟動(dòng)vim 在命令...
    im螞蟻閱讀 30,826評(píng)論 3 48
  • 目錄(?)[-] 關(guān)于Vim 1 Vim的幾種模式 啟動(dòng)Vim 文檔操作 光標(biāo)的移動(dòng) 1 基本移動(dòng) 2 翻屏 3 ...
    SunnyLeong閱讀 8,734評(píng)論 0 32
  • 待整理~ 1、vim ~/.vimrc 進(jìn)入配置文件 如果不知道vimrc文件在哪,可使用 :scriptname...
    spfanlost閱讀 1,741評(píng)論 0 0
  • 曾經(jīng)在思科的工廠測(cè)試系統(tǒng)`KlemTest` (`SUSE`命令行模式)中使用`VI`/`VIM`超過2年半,現(xiàn)在...
    戈多在地獄閱讀 1,842評(píng)論 1 13
  • 成長(zhǎng)是破自戀的過程。 這句話值得多去想一下。我想先來說自己的理解。 讀《原則》時(shí),達(dá)里奧說要找到真相,才能更好的順...
    來是春初閱讀 794評(píng)論 2 11