Google 大牛都在使用 vim,你竟然不會用?
來自專欄 cdeveloper
版權聲明:本文首發於公眾號 CDeveloper,原創文章可以隨意轉載,但必須在明確位置註明出處!
vim 簡介
vim 被稱為編輯器之神!
在 Linux 下我們經常使用 vim 來寫程序,學會使用它可以說是學習 Linux 的必經之路,而且 Google,Facebook 的各路大牛都在使用這個編輯器,你有什麼理由拒絕呢?
Linux 系統默認是安裝了 vi 編輯器,而 vim 是 vi 的升級版,功能更強,所以我們更經常用 vim,這次就來介紹使用 vim 的正確姿勢,廢話不多說,先來安裝 vim。
安裝 vim
使用最簡單的方法來安裝:
sudo apt-get install vim
配置 vim
安裝之後的默認的功能比較少,例如缺少語法高亮,打開行號,等等。但是這些功能都是可以配置的,因此我們需要了解如何配置 vim,其實是非常簡單的,我們只需要更改 vim 的配置文件即可。
對於 vim 來說,我們有 2 種方法更改配置:
- 更改 vim 系統配置文件:/etc/vim/vimrc
- 更改當前用戶的 vim 配置文件:~/.vimrc
為了不影響其他的用戶,我這裡就使用第二種方法,在當前用戶的主目錄下新建 .vimrc 隱藏文件,這樣當 vim 啟動時就會讀取這個文件的配置信息。
在 Linux 下,前綴是 「.」的文件表示隱藏文件,使用 la 命令來查看當前目錄全部文件 啟動時就會讀取這個文件的配置信息。
我的 .vimrc 文件中關於 vim 配置的內容如下(還有很多插件的配置信息就不列出了):
set fenc=utf-8 "設定默認解碼 set nocp "用於關閉 vi 的兼容模式set number "顯示行號 set ai "使用自動對齊,也就是把當前行的對齊格式應用到下一行set si "智能的選擇對齊方式set tabstop=4 "設置 tab 鍵為 4 個空格set sw=4 "設置當行之間交錯時使用 4 個空格set ruler "設置在編輯過程中,於右下角顯示游標位置的狀態行set incsearch "設置增量搜索set showmatch "高亮顯示匹配的括弧set matchtime=5 "匹配括弧高亮時間set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 "支持不同編碼的文件,防止出現亂碼syntax on "高亮語法set backspace=indent,eol,start "防止退格鍵不能使用
配置完畢,重新使用 vim 打開文件,可以看到增加了很多實用的功能,寫程序的效率也提高很多。當然,想要更進一步提高編程的效率,還需要安裝一些插件,我後面會再寫篇文章來介紹如何使用 Vundle 來安裝插件,其實也很簡單,有興趣的可以先去 Google。
如果你是配置系統的 sudo gedit /etc/vim/vimrc 文件,你也只需要將上面的內容加到這個文件的尾部即可。
好了,基本配置完成了,但是如何使用啊?據說學會使用 vim 後基本不用滑鼠了,是的,用 vim 寫程序,鍵盤就可以搞定一切,可謂鍵盤在手,天下我有。
下面就來介紹 vim 的基本使用方法。
使用 vim
使用之前,需要先了解 vim 編輯器常用的 5 種模式:
- 底行模式:先按 ESC 退出到默認狀態,然後在編輯器中輸入 [ : ] 即可進入該模式,主要用來保存,退出,替換這些功能
- 命令模式:默認模式就是命令模式,可以輸入例如 i,o,a,這些命令來進入編輯模式
- 編輯模式:就是普通編輯器的模式,用來寫程序的地方,在命令模式下,輸入 i 即可進入編輯模式,還有其他進入編輯模式的方法,後面介紹
- 字元可視模式 [ VISUAL ]:在命令模式下按 [ v ] 即可進入該模式,主要用於字元的複製,粘貼等
- 塊可視模式 [ VISUAL - BLOCK ]:在命令模式下按 [ Ctrl + v ] 即可進入該模式,主要用於塊字元的操作,例如塊注釋
不論什麼模式,都可以按 ESC 來退回到默認的狀態,務必記住。
學習 vim 有這張圖就夠了
這張圖包含了使用 vim 一些常用的命令,學會了這張圖,你使用 vim 就沒有多大的問題了。
下面就一起解讀一下這張圖。
1. Command mode
該模式是命令模式,我比較常用的命令有下面一些,我建議你看的同時自己實踐練習。
游標:我使用上下左右來移動游標,[ ^ ] 移動游標到行首,[ $ ] 移動到行尾。
插入:使用 [ i ] 在當前游標的前面插入,[ a ] 在游標後面插入,[ I ] 和 [ A ] 分別在行首和行尾插入,另外補充一個,[ o ] 在下一行插入,[ O ] 在上一行插入。
刪除:使用 [ x ] 刪除當前游標所在的字元,[ dw ] 刪除一個單詞,[ dd ] 刪除一行,[ ndd ] 刪除 n 行。
查找:使用 [ / ] 來查找文本,比如查找 hello,輸入 [ /hello ],然後回車即可看到結果,按 [ n ] 查看下一個結果,按 [ N ] 查看上一個結果。
複製:使用 [ yy ] 來複制一行,使用 [ nyy ] 來複制 n 行,使用 [ p ] 來粘貼。
撤銷:使用 [ u ] 來撤銷上一次的操作,使用 [ . ] 來反撤銷。
進入底行模式:也稱為擴展模式,輸入 [ : ] 即可進入。
定位到某行:使用 [ gg ] 定位到文件首行,[ G ] 定位到文件末尾,[ nG ] 定位到第 n 行。
翻頁:使用 [ Ctrl + f ] 向前翻一頁,使用 [ Ctrl + b ] 向後翻一頁。
2. Ex mode
該模式即底行模式,主要用於保存,退出,替換等功能,我比較常用的命令有下面這些:
保存退出:[ :w ] 保存,[ :w! ] 也是保存,[ :q ] 退出,[ :q! ] 不保存退出,[ :wq! ] 不保存退出,[ :wq ] 保存退出,最常用。
替換:[ :%s/old/new/gc ] 用 new 來替換 old,[ c ] 表示每次替換都要用戶確定是否替換,如果不加 c,則立刻全局替換。
3. Edit mode
該模式即編輯模式,使用 Command mode 中介紹的插入命令即可進入該模式,在該模式下沒有啥技巧,就跟普通編輯器一樣。
好了,常用的命令都介紹完了,不知道你實踐了沒有,學習使用 vim 不是看看博客就能學會的,關鍵是你要自己去練習,只要你能堅持每天都敲這些命令,養成你自己的習慣,形成肌肉記憶,與鍵盤融為一體,我相信你的編程效率會提高很多,因為你解放了一隻使用滑鼠的手。
一些 vim 小技巧
這裡我介紹幾個常用的 vim 的小技巧,其實也算是命令,只不過不在上面的圖中,這些命令我也經常使用。
可視化複製,剪切,刪除:在命令模式下鍵入 [ v ] 進入 [ VISUAL ] 模式,然後使用方向鍵可以選擇文本,之後使用 y,d,c 分別對選擇的文本進行複製,刪除,剪切操作,這樣就解決了一次只能複製和刪除一行或多行的限制了。
添加多行注釋:這個功能 IDE 也有,在 vim 中也可以添加多行注釋,先使用 [ Ctrl + v ] 進入 [ VISUAL - BLOCK ] 模式,然後上下選擇要注釋的多行,選擇完後按大寫的 I 來插入注釋使用的字元,例如 #,然後按 ESC 鍵,大約等待 1 s 即可看到選擇的多行已經被注釋了。
如何取消多行注釋呢?同樣也是先進入 [ VISUAL - BLOCK ] 模式,上下選擇取消注釋的多行,然後按左右鍵將要刪除的注釋字元也選擇上,然後按 d 刪除注釋字元即可。這個操作描述起來有些複雜,但是實際操作其實挺簡單的,要多加練習,如果實在不能明白,可以去 Google 上查找相關的 Gif 圖片或者視頻。
格式化代碼:IDE 一般都有格式化代碼的快捷鍵,vim 怎麼可能沒有,在命令模式下先按 [ gg ] 定位到行首,然後鍵入下面的命令:[ shift + v + g + = ],意思是先按大寫的 VG來全選文本,然後按 [ = ] 即可格式化全部代碼。
如何格式化部分代碼呢?使用 [ v ] 來進入 [ VISUAL ] 模式,然後方向鍵選擇要格式化的代碼區域,之後按下 [ = ] 即可格式化。
總結
本次主要介紹了 vim 的基本使用方法和一些小技巧,vim 真正強大的地方在於它有很多好用的插件,我後續會更新如何使用 Vundle 來為 vim 安裝炫酷的插件,可以先看看我安裝完插件後的 vim,是不是瞬間高大上了,我看你骨骼驚奇,一定能夠學會,期待後面與你相見
推薦閱讀:
※Docker初體驗
※程序計數器(Program Counter)是一個實際存在的寄存器嗎?
※一個用慣了windows的用戶,怎樣上手linux系統?如果用linux系統,能夠勝任日常辦公需求嗎?
※Mac OS X 有沒有ip命令?
※如何安裝GNOME插件