1. 程式人生 > >linux中vim常用命令總結

linux中vim常用命令總結

   



  linux中vi和vim文字編輯器

1.分類:
 

  1)linux中全屏編輯器是Vim、Emacs等,linux分為全屏文字編輯器、行編輯器。

  2)按執行介面分類,字元介面編輯器和圖形介面編輯器。常見的字元介面編輯器是
        vi、vim、Emacs、Nano等;常見的圖形介面編輯器是Gedit
  3)互動式和非互動式分類。

2.vim編輯器
  1)vim的編輯器的模式
    命令模式:在這種模式下,可以通過vim的命令對檔案的內容進行處理(複製、刪 除、移動等),也可以通過按游標鍵來移動游標
   編輯模式:在這種模式下,可以在游標處輸入內容
   命令頂模式:在命令模式下,使用者輸入冒號後,游標會跳到底行,然後輸入命令
   命令模式-->輸入a、A、i、I、o、O等命令-->編輯模式
   編輯模式-->按ESC鍵-->命令模式
 2)在命令模式下,輸入:
:w 儲存檔案,不退出vi
:w filename 把vi中的內容儲存到不存在的filename檔案,不退出vi
:w! filename 把vi中的內容儲存到已存在的filename檔案,不退出vi
:w>>filename 把vi中的內容追加到filename檔案,不退出vi
:n1,n2w filename 把n1行到n2行的內容儲存到不存在的filename檔案
:n1,n2w! filename 把n1行到n2行的內容儲存到已存在的filename檔案
:wq 儲存檔案,退出vi
:x 儲存檔案,退出vi
:ZZ 儲存檔案,退出vi
:q 不儲存檔案,退出vi(若檔案已改變,則不能退出)
:q! 不儲存檔案,退出vi
:ZQ 不儲存檔案,退出vi

3. 在命令模式下,可以輸入以下命令:
(1)游標移動命令
h: 左
l: 右
k: 上
j: 下
向左游標鍵
向右游標鍵
向上游標鍵
向下游標鍵
(2)插入命令
i:在游標處插入內容
I:在第一行插入內容
a:在游標後插入內容
A:在當前行的尾部插入內容
o:在當前行的下面插入新行
O:在當前行的上面插入新行
(3)刪除命令
x:刪除游標處的字元
X:刪除游標前的一個字元
d0:刪除從當前游標所在行的第一個字元到當前游標的前一個字元的一串字元
D:刪除從當前游標所在的字元到當前游標所在行的最後一個字元的一串字元
dd:刪除游標所在行的所有字元
dw:刪除從游標處字元開始的一個單詞
例如:a boy girl pig
如果游標在l處,dw後,結果是:a boy girpig
如果游標在l和p之間的空格處,dw後,結果是:a boy girlpig
如果游標在b處,dw後,結果是:a girl pig
#dd:刪除從游標所在的行到其後的#-1行(#必須用數字代替)
#x:刪除從游標所在的字元開始的#個字元(#必須用數字代替)
:n1,n2 d:刪除n1行到n2行的內容
(4)複製命令
:n1,n2 t n3:把n1行到n2行的內容複製到第n3行的下一行
(5)移動命令
:n1,n2 m n3:把n1行到n2行的內容移動到第n3行的下一行
(6)修改/替換命令
r:輸入一個字元替換游標處的一個字元
R:從游標處的字元開始替換,後面的字元一個一個被輸入的字元覆蓋
s:輸入一串字元來替換游標處的字元
S:先清除游標所在的行,你可以在當前行輸入一串字元
cc:先清除游標所在的行,你可以在當前行輸入一串字元
cw:修改一個單詞
例如:ab cdef ghijk
游標在d處,輸入cw後,結果是:ab cde$ ghijk,
此時若輸入pqghd後,結果是:ab cpqghd ghijk
此時若輸入p後按ESC鍵,結果是:ab cp ghijk
C:修改從游標處開始及其該行後面的部分
例如:ab cdef ghijk
游標在d處,輸入cw後,結果是:ab cdef ghij$,此時輸入pqghd後,結果是:ab cpqghd
(7)游標定位命令
0:定位到游標所在行的行首
$:定位到游標所在行的行末
:#:定位到第#行的行首
:$:定位到最後一行的行首
/exp:向後定位到字串exp
?exp:向前定位到字串exp
/^exp:定位到行首為字串exp的行
/exp$:定位到行末為字串exp的行
n,m ?/exp:從n行到m行向前搜尋字串exp (此命令有待商榷)
n,m |/exp:從n行到m行向前搜尋字串exp (此命令有待商榷)
(8)搜尋替換命令
:s/exp1/exp2/g:將當前行的字串exp1替換成字串exp2
:n,m s/exp1/exp2/g:將n行到m行的字串exp1替換成字串exp2
:g/exp1/exp2/g:將當前行的字串exp1替換成字串exp2
:g/exp1/s//exp2/g:將全文中的字串exp1替換成字串exp2
(9)撤銷命令
u
(10)緩衝區命令
預設情況下,vi使用無名緩衝區,例如:雖然將檔案的某些部分刪除了,但仍可以用u命名進行撤銷。
yy:將游標所在的行放入無名緩衝區
Y:將游標所在的行放入無名緩衝區
p:將緩衝區中的內容貼上到游標所在的行的下一行
P:將緩衝區中的內容貼上到游標所在的行的上一行
"#yy:將游標所在的行放入緩衝區# (#必須用a~z代替
)
"#p:將緩衝區#中的內容貼上到游標所在的行的下一行 (#必須用a~z代替)
"#P:將緩衝區#中的內容貼上到游標所在的行的上一行 (#必須用a~z代替)
"#d:刪除當前行,將當前行的內容放入緩衝區#
(11)其它命令

:set nu:顯示行號
:set nonu:取消行號
:n 定位到下一個檔案
:N 定位到上一個檔案
vi 1.c 2.c 3.c:一次開啟3個檔案
首先會開啟1.c,輸入:n命令後,會開啟2.c,再輸入:n命令後,會開啟3.c,
再輸入:N命令後,會開啟2.c,再輸入:N命令後,會開啟1.c。
Ctrl+G:顯示當前編輯檔案的資訊
Ctrl+L:重新整理螢幕
Ctrl+d:向後翻半屏
Ctrl+u:向前翻半屏
Ctrl+f:向後翻一屏
Ctrl+b:向前翻一屏
3.Vim編輯器讀取檔案
 1)開啟新檔案進行編輯
   :e /root/a2 (編輯器中的檔案已經儲存,否則會提示錯誤)
   :e! /root/a2 (不儲存檔案,強制開啟)
 2)讀取另一個檔案的內容,並追加到當前檔案的結尾
    :r /root/a2
 3)撤銷和恢復
  u:撤銷上一步操作,可以多次使用 
  ctrl+r:恢復已經撤銷的操作,可以多次使用。 
 4)快速移動游標