ubuntu系統下如何使用vim 文本編輯器?

jopen 9年前發布 | 154K 次閱讀 Vim

在linux的發行版本中,系統默認都會安裝vi 編輯器,vim編輯器是vi的改進版本。剛裝完系統之后,系統里是沒有安裝vim軟件包的。所以需要你手動在ubuntu系統下安裝vim 文本編輯器

vim文本編輯器是一個非常強大的工具,可以做很多事情,比如新建文件,打開文件,編輯文件,保存文件,同時打開多個文件等。下面總結一些常用的vim 編輯器命令:


1. 進入vim編輯器的方式:(進入vim編輯器時,默認的模式是“命令模式”) 在終端輸入
vi:進入vim編輯器
vi filename:進入vim編輯器,新建了一個filename文件,光標定位到文件的第一行
vi在工作時,會在當前目錄下創建.swp的臨時文件,該臨時文件也稱為交換文件
當vi結束對當前文件編輯且正常退出時,臨時文件.swp會被自動刪除
當vi結束對當前文件編輯且非正常退出時,臨時文件.swp會被殘留下來
vi + filename:進入vim編輯器,打開已存在的filename文件,光標定位到文件的最后一行
vi在工作時,會在與被編輯文件相同的目錄內創建一個名為.filename.swp的臨時文件
當vi結束對當前文件編輯且正常退出時,臨時文件.filename.swp會被自動刪除
當vi結束對當前文件編輯且非正常退出時,臨時文件.filename.swp會被殘留下來
vi +# filename:進入vim編輯器,打開已存在的filename文件,光標定位到文件的第#行(#必須用數字代替)
vi -R filename:進入vim編輯器,以只讀方式打開已存在的filename文件,被編輯的文件不能回存,但可以另存為
vi -r filename:從vi crash或非正常退出中恢復文件
vi -r .*.swp:從交換文件.*.swp中恢復文件
vi -r:列出當前目錄內所有因vi非正常退出而殘留的交換文件,以便恢復
vi -L:列出當前目錄內所有因vi非正常退出而殘留的交換文件,以便恢復
2. vi有三種工作方式: 命令模式編輯模式命令項模式
命令模式:在這種模式下,可以通過輸入vi的命令對文件的內容進行處理(復制、刪除、移動等),也可以通過按光標鍵來移動光標。
編輯模式:在這種模式下,可以在光標處輸入內容。
命令項模式:在命令模式下,用戶輸入冒號后,光標會跳到底行,然后輸入命令。
命令模式 --> 輸入a、A、i、I、o、O等命令 --> 編輯模式
編輯模式 --> 按ESC鍵 --> 命令模式

命令模式 --> 輸入冒號 --> 命令項模式

3. 退出vi的命令
在命令模式下,輸入:
: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

4. 在命令模式下,可以輸入以下命令:
(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:向前翻一屏
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!