Ubuntu上的編輯器有gedit、vi、sublime等。gedit一般在沒有其他編輯器時臨時使用,大部分情況下,vi和sublime使用的比較多,Linux系統內置了vi和sublime,其中,sublime是可視化的編輯器可以通過鼠標操作可以實現各種功能,學習起來比較容易,這里就不作贅述。今天主講的是非可視化的編輯器vi,提到vi編輯器既讓人愛又讓人恨。學會vi編輯器的程序猿愛死了vi,新手恨死了vi。接下來就系統的講解下VI編輯器,供大家參考查詢。
vi又叫vim,這兩個是一樣的。
vi編輯器有三種狀態:命令模式、末行模式、編輯模式。
首先我們來打開一個vi文件test.py,命令是 vi test.py,這里必須說明,如果test.py已經存在,那么執行vi test.py命令之后會自動創建一個空白文件,如果在文本中輸入了內容,並且保存了,那么文件就自動創建。如果當前文件夾中存在test.py文件,則打開當前的test.py文件。
接下來我們來了解vi的三種模式:
1、命令模式
當我們用vi 命令打開一個文件時,默認處於命令模式,命令模式的含義是當前可以通過在鍵盤輸入各種按鍵命令實現編輯當前打開文檔的操作。需要主要的是,當前按鍵操作是不會顯示在終端上,但命令的執行效果會顯示在當前編輯的內容上(這是很多新手剛接觸vi時記不住命令模式對應功能鍵的關鍵,人都是所見所得的動物,但一定要明白,堅持敲幾天就熟練了,原諒自己起步笨是進步的前提)。部分常用的命令如下:
dd:刪除光標所在當前行
ndd:刪除光標所在行在內及其下的n-1行,共n行內容。如5dd,刪除光標所在行其下面4行內容。(ubuntu中dd實際上相當於windows中的剪切,如果按p鍵可以粘貼剛才刪除的內容)
d0:(0是數字)從光標處前一個字符刪到當前行首
D:刪除光標位置到行尾的全部內容。實際上也是剪切。
yy:復制當前行內容,用p鍵粘貼
nyy:復制光標當前行及其下n-1行,共n行內容,用p鍵粘貼。如5yy,復制光標所在行及其下4行內容。
p:粘貼復制或者剪切的內容到當前光標所在行的下一行
P:粘貼復制或者剪切的內容到當前光標所在行的上一行
u:撤銷上一步操作。和windows里面的Ctrl + Z功能類似。
Ctrl + r:返撤銷操作
x:刪除光標所在位置的單個字符,向行尾方向刪除,光標前面字符不變。
X:刪除光標所在位置前面的單個字符,向前行首刪除,光標后面字符不變。
r:修改光標所在位置的單個字符。
R:替換光標所在位置及其后的字符,光標自動后移
h:光標左移 j:光標下移動 k:光標上移 l:光標右移 (實際上小鍵盤旁的上下左右方向鍵也可以移動)
v:可視化選取,單個選中,從光標向后選中,按照字符來選中(左右鍵),也可選中行(上下鍵),選中之后如果右移選中部分:shift + > 如果左移選中部分:shift + <
V:可視化選取,選中一片,從光標所在行開始選中,按照最小單位行來選中(上下鍵),選中之后如果右移選中部分:shift + > 如果左移選中部分:shift + < (V這個一般用的多點)
.:這個鍵和“>”在同一個鍵盤位上,表示重復上一步操作,經常與移動選中部分搭配使用,來重復向左或向右移動多次
ZZ:保存當前文檔並退出vi編輯器
0:(數字0)跳到當前行首位置
$:跳到當前行末位置
G:跳到文檔末行的行首位置
gg:跳到文檔首行的行首位置
nG:快速跳到某一行行首,比如5G,快速跳到第五行行首位置
H:光標跳到當前屏幕顯示部分的首行行首
M:光標跳到當前屏幕顯示部分的中間行行首
L:光標跳到當前屏幕顯示部分的末行行首
Ctrl + f:向文末翻一屏代碼
Ctrl + b:向文首翻一屏代碼
Ctrl + m:向文首翻半屏代碼
Ctrl + d :向文末翻半屏代碼
w:向行尾每次跳一個單詞的長度
dw:刪除一個單詞
b:向行首每次跳一個單詞長度
以上就是我常用的鍵盤命令,掌握以上這些基本就可以了。
另外需要注意的是在命令模式下:Ubuntu終端字體變大:Ctrl + Shift + T 同樣適用,字體變小:Ctrl + -
2、末行模式:
vi打開編輯時默認狀態是命令模式,進入末行模式的用:再加上命令。這時輸入的命令在頁面顯示底端。
:w :保存當前文檔,不退出vi編輯器(這個命令是實際開發中用的多,比如同時開三個終端,一個編輯代碼,一個運行代碼,一個用python的交互模式,三個終端生成快捷鍵Ctrl + Shift + T,終端之間切換用Alt + 1、Alt + 2、Alt + 3)
:q :不保存已有的編輯,退出vi編輯器
:wq :保存編輯並退出
:x :保存並退出(這個命令比:wq用的多)
:/hello :搜索hello,hello可以換成其他字符 在搜索字符時輸入命令后,可以向上搜索(N 鍵),也可以向下搜索(n鍵)
:set nu:設置顯示左側行號(永久顯示行號一般都在系統中改變配置文件/etc/vimrc,添加:set nu即可,如果修改必須獲取文件權限,多以root權限去修改)
:set nonu:取消左側行號限制(這個功能很少用)
:%s/hello/world/g:替換全文的hello為world
:11,16s/hello/world/g:將11-16行中的hello替換為world
末行模式知道這些常用的即可,不記得的時候查一下,多使用就習慣了。
3、編輯模式
編輯模式是最簡單的模式,正常的如txt文本般編輯即可,沒有多大的特殊之處。這里要講的是怎么從命令模式切換到編輯模式時不同命令光標插入的位置不同。
如果當前是末行模式必須先切換到命令模式才能進入編輯模式,末行模式到命令模式:ESC鍵 末行模式和編輯模式之間不能直接切換,只能通過命令模式過渡。
命令模式切入編輯模式命令如下:
i:從光標處之前插入
I:跳到光標所在行行首插入
a:從光標之后插入
A:跳到光標所在行行末插入
o:(字母o)在光標所在行,及其下一行之間新增一空白行,光標跳到空白行行首
O:(字母O)在光標所在行,及其上一行之間新增一空白行,光標跳到空白行行首
以上的命令實際上是命令模式下敲入的,但和編輯模式最為緊密,所以放到編輯模式里面講。
編輯模式回到命令模式用ESC鍵,熟練掌握了vi之后都是在這個三個模式之間切換,還是很方便的。
以上的說明是常用的功能,vi編輯器更能遠不止如此,掌握基本功能在實際開發中遇到新需求可以很快掌握。
以上不足和編輯錯誤之處,望評論指正,多多交流!