一、編輯器vim的鍵盤布局
vi和vim都是多模式編輯器,但vim是vi的升級(jí)版,不僅兼容vi的所有命令,還增加了許多新功能,如語(yǔ)法高亮和可視化操作。vim可以在終端、X Window、Mac OS和Windows上運(yùn)行。我們將以vim為例進(jìn)行講解。
下圖展示了HJKL作為方向鍵的歷史原因(最初的鍵盤沒有獨(dú)立的方向鍵):
三、vim的基本概念
我們將介紹vim的三種模式(雖然有更多模式,但目前掌握這三種即可):命令模式(Command mode)、插入模式(Insert mode)和底行模式(Last line mode)。各模式的功能如下:
- 正常/普通/命令模式(Normal mode):控制屏幕光標(biāo)的移動(dòng),刪除字符、單詞或行,復(fù)制和移動(dòng)段落,并進(jìn)入插入模式或底行模式。
- 插入模式(Insert mode):只有在插入模式下才能輸入文字,按「ESC」鍵可返回命令模式。這是我們最常用的編輯模式。
- 末行模式(Last line mode):用于文件保存或退出、文件替換、查找字符串和列出行號(hào)等操作。在命令模式下,按「shift+:」即可進(jìn)入該模式。要查看所有模式,打開vim,在底行模式輸入 :help vim-modes。我這里共有12種模式:6種基本模式和6種附加模式。
四、vim的基本操作
進(jìn)入vim,在系統(tǒng)提示符輸入vim及文件名后,就進(jìn)入vim的全屏編輯界面:
$ vim test.c
注意,進(jìn)入vim后處于正常模式,需要切換到插入模式才能輸入文字。將正常模式切換至插入模式:
- 輸入 a:光標(biāo)后移一位開始輸入
- 輸入 i:在光標(biāo)位置開始輸入
- 輸入 o:在光標(biāo)下方插入新行并開始輸入
將插入模式切換至正常模式:
- 若處于插入模式,只能輸入文字。如果發(fā)現(xiàn)輸入錯(cuò)誤,想用光標(biāo)鍵回退刪除,可以按「ESC」鍵返回正常模式再進(jìn)行刪除。當(dāng)然,也可以直接刪除。
將正常模式切換至末行模式:
- 按「shift + :」,即輸入「:」
退出vim并保存文件,在正常模式下按「:」進(jìn)入末行模式,例如:
- :w(保存當(dāng)前文件)
- :wq(保存并退出vim)
- :q!(不保存強(qiáng)制退出vim)
五、vim正常模式命令集
從正常模式切換到插入模式:
- 按「i」進(jìn)入插入模式,從光標(biāo)當(dāng)前位置開始輸入文件
- 按「a」進(jìn)入插入模式,從光標(biāo)所在位置的下一個(gè)位置開始輸入文字
- 按「o」進(jìn)入插入模式,插入新的一行,從行首開始輸入文字
從插入模式切換回命令模式:
- 按「ESC」鍵
移動(dòng)光標(biāo):
- 使用鍵盤上的光標(biāo)鍵移動(dòng),但正規(guī)的vim使用小寫字母「h」「j」「k」「l」分別控制光標(biāo)左、下、上、右移動(dòng)一格
- 按「G」:移動(dòng)到文章末尾
- 按「$」:移動(dòng)到光標(biāo)所在行的行尾
- 按「^」:移動(dòng)到光標(biāo)所在行的行首
- 按「w」:光標(biāo)跳到下個(gè)單詞的開頭
- 按「e」:光標(biāo)跳到下個(gè)單詞的結(jié)尾
- 按「b」:光標(biāo)回到上個(gè)單詞的開頭
- 按「#l」:光標(biāo)移到該行的第#個(gè)位置,如:5l, 56l
- 按「gg」:進(jìn)入文本開頭
- 按「shift+g」:進(jìn)入文本末尾
- 按「ctrl+b」:屏幕往后移動(dòng)一頁(yè)
- 按「ctrl+f」:屏幕往前移動(dòng)一頁(yè)
- 按「ctrl+u」:屏幕往后移動(dòng)半頁(yè)
- 按「ctrl+d」:屏幕往前移動(dòng)半頁(yè)
刪除文字:
- 「x」:每按一次,刪除光標(biāo)所在位置的一個(gè)字符
- 「#x」:例如,「6x」表示刪除光標(biāo)所在位置的后面(包括自己在內(nèi))6個(gè)字符
- 「X」:大寫的X,每按一次,刪除光標(biāo)所在位置的前一個(gè)字符
- 「#X」:例如,「20X」表示刪除光標(biāo)所在位置的前20個(gè)字符
- 「dd」:刪除光標(biāo)所在行
- 「#dd」:從光標(biāo)所在行開始刪除#行
復(fù)制:
- 「yw」:將光標(biāo)所在之處到單詞結(jié)尾的字符復(fù)制到緩沖區(qū)
- 「#yw」:復(fù)制#個(gè)單詞到緩沖區(qū)
- 「yy」:復(fù)制光標(biāo)所在行到緩沖區(qū)
- 「#yy」:例如,「6yy」表示復(fù)制從光標(biāo)所在行往下數(shù)6行文字
- 「p」:將緩沖區(qū)內(nèi)的字符粘貼到光標(biāo)所在位置。注意:所有與「y」有關(guān)的復(fù)制命令都必須與「p」配合才能完成復(fù)制與粘貼功能
替換:
- 「r」:替換光標(biāo)所在處的字符
- 「R」:替換光標(biāo)所到之處的字符,直到按下「ESC」鍵為止
撤銷上一次操作:
- 「u」:如果誤執(zhí)行一個(gè)命令,可以馬上按下「u」回到上一個(gè)操作。按多次「u」可以執(zhí)行多次撤銷
- 「ctrl+r」:撤銷的恢復(fù)
更改:
- 「cw」:更改光標(biāo)所在處的單詞到單詞結(jié)尾處
- 「c#w」:例如,「c3w」表示更改3個(gè)單詞
跳至指定的行:
- 「ctrl+g」:列出光標(biāo)所在行的行號(hào)
- 「#G」:例如,「15G」表示移動(dòng)光標(biāo)至文章的第15行行首
六、vim末行模式命令集
在使用末行模式之前,請(qǐng)確保按「ESC」鍵確認(rèn)已處于正常模式,然后按「:」進(jìn)入末行模式。
列出行號(hào):
- 「set nu」:輸入「set nu」后,會(huì)在文件的每一行前面列出行號(hào)
跳到文件中的某一行:
- 「#」:在冒號(hào)后輸入一個(gè)數(shù)字,再按回車鍵就會(huì)跳到該行了,如輸入數(shù)字15,再回車,就會(huì)跳到文章的第15行
查找字符:
- 「/關(guān)鍵字」:先按「/」鍵,再輸入想尋找的字符。如果第一次找到的關(guān)鍵字不是想要的,可以一直按「n」繼續(xù)往后查找
- 「?關(guān)鍵字」:先按「?」鍵,再輸入想尋找的字符。如果第一次找到的關(guān)鍵字不是想要的,可以一直按「n」繼續(xù)往前查找
問題:/ 和 ?查找有什么區(qū)別?操作實(shí)驗(yàn)一下。
保存文件:
- 「w」:在冒號(hào)輸入字母「w」就可以將文件保存起來
離開vim:
- 「q」:按「q」就是退出,如果無法離開vim,可以在「q」后跟一個(gè)「!」強(qiáng)制離開vim
- 「wq」:一般建議離開時(shí),搭配「w」一起使用,這樣在退出的時(shí)候還可以保存文件
七、vim操作總結(jié)
三種模式:
- 正常模式
- 插入模式
- 底行模式
我們共有12種總模式,大家可以進(jìn)一步研究。
vim操作:
- 打開,關(guān)閉,查看,查詢,插入,刪除,替換,撤銷,復(fù)制等操作
- 練習(xí):當(dāng)堂口頭模式切換練習(xí)
八、簡(jiǎn)單vim配置【了解】
配置文件的位置在目錄 /etc/ 下面,有個(gè)名為 vimrc 的文件,這是系統(tǒng)中公共的vim配置文件,對(duì)所有用戶都有效。而在每個(gè)用戶的主目錄下,都可以自己建立私有的配置文件,命名為:.vimrc。例如,/root 目錄下,通常已經(jīng)存在一個(gè) .vimrc 文件,如果不存在,則創(chuàng)建之。切換用戶成為自己,執(zhí)行 su,進(jìn)入自己的主工作目錄,執(zhí)行 cd ~,打開自己目錄下的 .vimrc 文件,執(zhí)行 vim .vimrc。
常用配置選項(xiàng),用來測(cè)試設(shè)置語(yǔ)法高亮:
- syntax on
顯示行號(hào):
- set nu
設(shè)置縮進(jìn)的空格數(shù)為4:
- set shiftwidth=4
使用插件要配置好看的vim,原生的配置可能功能不全,可以選擇安裝插件來完善配置,保證用戶是你要配置的用戶,接下來:
安裝TagList插件,下載 taglist_xx.zip,解壓完成,將解壓出來的 doc 的內(nèi)容放到 ~/.vim/doc,將解壓出來的 plugin 下的內(nèi)容復(fù)制到 ~/.vim/plugin。在 ~/.vimrc 中添加:
let Tlist_Show_One_File=1 let Tlist_Exit_OnlyWindow=1 let Tlist_Use_Right_Window=1
安裝文件瀏覽器和窗口管理器插件:WinManager,下載 winmanager.zip,2.X版本以上的解壓 winmanager.zip,將解壓出來的 doc 的內(nèi)容放到 ~/.vim/doc,將解壓出來的 plugin 下的內(nèi)容復(fù)制到 ~/.vim/plugin。在 ~/.vimrc 中添加:
let g:winManagerWindowLayout='FileExplorer|TagList' nmap wm :WMToggle
然后重啟vim,打開 ~/XXX.c 或 ~/XXX.cpp,在正常狀態(tài)下輸入 “wm”,你將看到界面效果。更具體移步:點(diǎn)我,其他手冊(cè),請(qǐng)執(zhí)行 vimtutor 命令。
參考資料:
- Vim從入門到牛逼(Vim from zero to hero)
九、關(guān)于vim超級(jí)配置