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