今日分享:Don't allow your rituals to become ruts. -- Todd Henry
?
vi/vim 的重要性不言而喻,比如登錄服務(wù)器操作。那么如何掌握呢?看這一篇足矣。
1.介紹
vi/vim 是 linux 上內(nèi)置的一款文本編輯器,就如同 windows 上的筆記本工具一樣。
要想使用它,先要了解它的三種模式:「命令模式」、「輸入模式」、「末行模式」(也被稱為底線命令模式 Last line mode)。命令模式可以操作一些快捷鍵,比如滾屏操作,定位操作等;輸入模式就是編輯模式,可以自由的打字輸入;末行模式可以輸入一些命令,來達到預(yù)期效果。
使用 vi/vim 打開一個文件時,默認就是「命令模式」;在命令模式下輸入 i 時,便進入了「輸入模式」;在輸入模式下按 esc 鍵時,又會返回命令模式。在命令模式下,按 : (也就是按shift + ;)時,會看到光標在窗口底部,此時進入了「末行模式」,在 : 后便可以輸入命令。更多精彩文章請關(guān)注公眾號『Pythonnote』或者『全棧技術(shù)精選』
?
vi 是老版本文本編輯器,vim 現(xiàn)在成為了主流,他倆命令一樣,只是 vim 擴展插件豐富,支持的功能更多而已。本文以常用的 vim 為例進行說明。
?
2.操作
打開一個文件:
vim test.txt
?
輸入上述命令會在當前目錄下尋找并打開 test.txt 文件,如果沒有,則在當前目錄下新建一個 test.txt 文件。
?
2.1 命令模式
?
1.以下內(nèi)容全為快捷鍵,直接按即可,不會有什么顯示。
2.注意區(qū)分大小寫。
3.打開文件默認進入的就是命令模式,輸入模式或者末行模式下按 esc鍵進入命令模式
?
- 「控制光標」:H是左;J 是下;K 是上;L 是右。
?
可以使用方向鍵 (←↓↑→)控制,但是通常不這么做,因為程序員的雙手一般都放在字母區(qū)域,去按方向鍵,再回到字母區(qū)域所需時間太長。使用 hjkl ,標準打字姿勢中右手完全可以操作,方便快捷。
?
- 「滾屏操作」:需要與 Ctrl 鍵配合使用,向上滾動半屏是 Ctrl + u,向下滾動半屏是 Ctrl + d。當然為了快速操作,還有滾動一屏:向上滾動一屏 Ctrl + b ,向下滾動一屏 Ctrl + f。
?
為了記憶,滾動半屏可以看做是 up/down ,分別是 u/d;滾動全屏可以看做 back/forword,分別是 b/f
?
- 「移動到行首或行尾」:這個快捷鍵一定要記憶,超級方便。
0 :它是數(shù)字0。可以快速移動光標到所在行的行首。
$ :英文輸入下,按 shift 和數(shù)字鍵 4 即可。可以快速移動光標到所在行行尾第一個非空字符下。
^ :英文輸入下,按 shift 和數(shù)字鍵 6 即可。可以快速移動光標到所在行,「第一個非空字符」處。因為敲代碼時總有縮進,當然希望到這一行代碼的第一個字母,而不是這一行行首的空格了。
- 「其他移動光標的操作」:
G :到文件最后一行。如果想要到指定的哪一行可以輸入行號,再輸入 G 。(注意:是大寫的 G)比如到 67 行,輸入 67 + G
?
到指定行是我最喜歡的功能。當然需要配合顯示行號使用,顯示行號會在末行模式處講。
?
gg :到文件第一行。
>> :文本向右移動
<< :文本左移
- 「刪除操作」:
x :刪除光標后一個字符
X :(大寫)刪除光標前一個字符
d :刪除鍵
dd :刪除光標所在行。如果想要刪除指定多少行,先輸入數(shù)字,再輸入 dd即可,比如刪除往下的 37 行內(nèi)容(包含光標所在行),輸入 37 dd 。
d0 :刪除光標前所有內(nèi)容
D :刪除光標后所有內(nèi)容
daw :刪除光標所在單詞(「超級常用」)
配合可視模式選中一些內(nèi)容,再按 d 就可以刪除這些內(nèi)容了。
- 「可視模式」:v 按字符移動光標選擇內(nèi)容,V (大寫) 按行上下移動選擇內(nèi)容。
- 「撤銷」:u 撤銷一步操作,Ctrl + r 反撤銷。
- 「復(fù)制粘貼」:y 是復(fù)制,p 是粘貼。配合可視模式,選中內(nèi)容后,按 y 即可復(fù)制,按 p 粘貼。yy 是復(fù)制光標所在行。更多精彩文章請關(guān)注公眾號『Pythonnote』或者『全棧技術(shù)精選』
?
注意:如果是復(fù)制一行內(nèi)容,粘貼時會向下粘貼一行;如果是復(fù)制幾個字符,會向光標后粘貼。「只針對當前文件有效」,也就是退出當前文件后,復(fù)制的內(nèi)容不在了。
?
- 「重復(fù)操作」:. 重復(fù)上一步操作
- 「替換操作」:
按 r 后再按要替換的字母。如將 n 替換為 m :將光標移動到字母 n下,然后按 r ,再按 m 即可。
按 R 后,再按要替換的字母,替換后,光標會移動到后一個字符,可以再次執(zhí)行替換操作,不必一直按 r。
- 「進入輸入模式」:
i:插入光標前一個字符
a:插入光標后一個字符
I:插入行首
A:插入行尾
o:向下新開一行,插入行首
O:(大寫)向上新開一行,插入行首
2.2 輸入模式
輸入模式下,不能使用快捷鍵,可以正常打字或者使用方向鍵控制光標。按 Esc 鍵進入命令模式。更多精彩文章請關(guān)注公眾號『Pythonnote』或者『全棧技術(shù)精選』
2.3 末行模式
在命令模式下,按 : 進入末行模式。退出末行模式按 esc 鍵,即可進入命令模式。
* 退出
# 保存并退出
:wq
# 直接退出
:q
# 強制退出
:q!
- 顯示行號
:set nu
- 查找
:/要查找的內(nèi)容
按 n 查找下一個;按 N 查找上一個。
- 高亮顯示查找內(nèi)容
:set hlsearch
- 替換
# 末行模式下,將當前文件中的所有abc替換成123
:%s/abc/123/g
# 末行模式下,將第一行至第10行之間的abc替換成123
:1, 10s/abc/123/g
?
1.%表示整個文件;1, 10表示1到10行范圍內(nèi)
2.s 表示替換
3.g 表示全局
?
3.總結(jié)的一些騷操作
1.要查找光標所在單詞,直接按下面的快捷鍵:
*
?
也就是按 shift + 鍵盤字母區(qū)上方數(shù)字鍵8
?
2.如何快速選中一個單詞:先把光標移動到該單詞下方,然后按 b 移動光標到單詞首字母,按 v 進入可視模式,再按 e 選中當前單詞,即 bve。選中之后就可以按 y 復(fù)制,或者按 d 刪除了。更多精彩文章請關(guān)注公眾號『Pythonnote』或者『全棧技術(shù)精選』
3.我想把內(nèi)容復(fù)制后,其他文件也使用,就好像 ctrl c 那樣。可以使用如下快捷鍵:
"+y
先選中所有復(fù)制內(nèi)容,然后按上述快捷鍵(注意「上述快捷鍵是三個字符」)即可復(fù)制到系統(tǒng)的剪切板中。
4.如果我想在新打開的文件中粘貼上一個文件中復(fù)制的內(nèi)容呢?
"+p
4.插件
vim 優(yōu)秀就優(yōu)秀在它可以使用插件,然后打造出一款類似 Pycharm 的 IDE 工具。本文列舉一些常用插件,具體安裝對應(yīng) GitHub 上操作,自己 google 一下。
「插件管理工具」 :Vundle
「目錄樹」:NERDTree
「搜索文件」:CtrlP
「基于內(nèi)容搜索文件」:ack
「python函數(shù)跳轉(zhuǎn)功能」:ptags 可以查看我的文章『vim實現(xiàn)python函數(shù)跳轉(zhuǎn)』
「代碼折疊」:這個不是插件,而是修改 .vimrc 配置文件,Google 一下
「代碼補全」:YCM (YouCompleteMe)