2021-05-12 14:32:11
RHEL7 下 Vim編輯器使用
本文介紹Vim編輯器的使用
vi和vim的區別
它們都是多模式編輯器 不同的是vim是vi的升級版本
它不僅相容vi的所有指令而且還有一些新的特性在裡面
vim的這些優勢主要體現在以下幾個方面
- 多級撤消 在vi裡 按u只能撤消上次命令 而在vim裡可以無限制的撤消
- 易用性 vi只能執行於unix中 而vim不僅可以執行於unix windows mac等多操作平台
- 語法加亮 vim可以用不同的顏色來加亮你的程式碼
- 視覺化操作 vim不僅可以在終端執行 也可以執行於x window mac windows
- 完全相容vi 某些情況下 你可以把vim當成vi來使用
Linux編輯器Vim鍵盤詳解 見 http://www.linuxidc.com/Linux/2016-05/131866.htm
vim主要模式介紹
確認是否安裝了vim工具
[root@www.linuxidc.com /]# rpm -qf `which vim`
vim-enhanced-7.4.160-1.el7.x86_64
如果沒有安裝使用yum線上安裝即可
[root@www.linuxidc.com /]# yum -y install vim
三種模式
vim編輯器三種模式:命令模式、插入模式、末行模式
從上圖可以看出:末行模式切換到插入模式需要先切換到命令模式
按鍵說明
游標移動
按鍵 | 說明 |
---|---|
h或← | 游標向左移動一個字元 |
j或↓ | 游標向下移動一個字元 |
k或↑ | 游標向上移動一個字元 |
l或→ | 游標向右移動一個字元 |
Ctrl+f或PageDown | 向下翻一頁 |
Ctrl+b或PageUp | 向上翻一頁 |
+ | 游標移動到非空白字元的下一列 |
- | 游標移動到非空白字元的上一列 |
n+space | 游標移動到本行第n個字元處 |
0或home | 游標所在行行首 |
$或end | 游標所在行行尾 |
H | 移動游標到螢幕第一行行首 |
M | 移動游標到螢幕中央那一行的行首 |
L | 移動游標到螢幕最後一行行首 |
G | 移動游標到當前檔案的末尾 |
n+G | 移動游標到這個檔案的第n行 |
gg | 移動游標到這個檔案的第一列 相當於1+G |
:n | 移動游標到這到這個檔案的第n行 相當於nG |
n+Enter | 向下移動n行 |
查詢
按鍵 | 說明 |
---|---|
/word | 向游標之下尋找一個名稱為word的字串 |
?word | 想游標之上尋找一個名稱為word的字串 |
n | 重複前一個尋找動作 如果執行/vim去向下尋找vim字串 按n會向下繼續尋找下一個vim字串 如果執行?vim按n則會向上尋找vim字串 |
N | 與n相反,進行反向搜尋 |
:n1,n2s/word1/word2/g | 在n1與n2行之間尋找word1字串並替換為word2字串 |
:1,$s/word1/word2/gc | 從首行到末行尋找word1字串並替換為word2字串 並且在取代前提示是否確認替換 |
:% s/a/b | 將每行的第一個a替換為b |
:% s/a/b/g | 將所有的a替換為b |
% 表示所有內容
g 全部
c confirm提示確認
複製貼上刪除
按鍵 | 說明 |
---|---|
x | 向後刪除一個字元 |
X | 向前刪除一個字元 |
BackSpace | 向前刪除一個字元 |
nx | 連續向後刪除n個字元 |
dd | 刪除游標所在行 |
ndd | 刪除包含游標所在行在內的向下n行 |
d1G | 刪除首行到游標所在行的所有資料 |
dG | 刪除游標所在行到最後一行的所有資料 |
d$ | 刪除游標所在行游標位置到該行行尾的所有資料 |
d0 | 刪除游標所在行游標位置到該行行首的所有資料 |
yy | 複製游標所在的整行 |
nyy | 複製游標所在的向下n行 |
y1G | 複製首行到游標所在行的所有資料 |
yG | 複製游標所在行到末行的所有資料 |
y0 | 複製游標所在位置到游標所在行行首的所有資料 |
y$ | 複製游標所在位置到游標所在行行尾的所有資料 |
p | 將已複製的資料貼上到游標下一行 |
P | 將已複製的資料貼上到游標上一行 |
J | 將游標所在行與下一行的資料合併為一行 |
c | 重復刪除多個資料 |
u | 復原 |
Ctrl+r | 反復原 |
. | 重複前一個動作 |
插入和修改
按鍵 | 說明 |
---|---|
i | 從游標所在位置插入 |
I | 從游標所在行第一個非空字元位置插入 |
a | 從游標所在的下一個字元位置插入 |
A | 從游標所在行的最後一個字元處開始插入 |
o | 從游標所在位置向下插入新的一行 |
O | 從游標所在位置向上插入新的一行 |
r | 替換游標所在位置的一個字元 |
R | 替換游標所在位置的所有字元直到按ESC結束 |
ESC | 退出插入模式回到命令模式 |
末行模式
在命令模式下按:鍵會進入到末行模式
按鍵 | 說明 |
---|---|
:w | 儲存資料寫入到硬碟 |
:W | 強制寫入資料到唯讀檔案(需要有對該檔案的寫入許可權) |
:q | 退出vim |
:q! | 強制退出不儲存 |
:wq | 儲存後退出 |
:wq! | 強制儲存退出 |
ZZ | 如果檔案沒有更改則不儲存並退出如何有更改則儲存退出 |
:w test.txt | 將更改後的資料另存為test.txt檔案 |
:r test.txt | 將test.txt這個檔案的內容追加到游標所在行之後 |
:n1,n2 w test.txt | 將n1到n2行之間的內容儲存到test.txt檔案中 |
:! command | 暫時離開vim到系統文字模式下檢視執行command執行的結果 |
:set nu | 顯示行號 |
:set nonu | 復原行號 |
區塊選擇
按鍵 | 說明 |
---|---|
v | 將游標經過的地方全部選中 |
V | 將游標經過的行全部選中 |
Ctrl+v | 以長方形的方式選擇資料 |
y | 複製未被選中的地方 |
d | 刪除未被選中的地方 |
p | 將複製的內容貼上在游標所在位置 |
vim警告資訊
當我們在使用vim進行編輯時,vim會在與被編輯的檔案的目錄下再建立一個名為.filename.swp的檔案
當你因為某些原因(系統斷線、Ctrl+z等)而沒有儲存你正在編輯的檔案時,這個swp檔案就能發揮救援功能
建立test.txt檔案後使用vim編輯再按Ctrl+z模擬非正常儲存退出
[root@www.linuxidc.com ~]# touch test.txt
[root@www.linuxidc.com ~]# vim test.txt
[7]+ Stopped vim test.txt
再次使用vim編輯test.txt檔案出現以下資訊
E325: ATTENTION
Found a swap file by the name ".test.txt.swp"
owned by: root dated: Sat Aug 13 11:42:16 2016
file name: ~root/test.txt
modified: no
user name: root host name: www.linuxidc.com
process ID: 20247 (still running)
While opening file "test.txt"
dated: Sat Aug 13 11:38:53 2016
(1) Another program may be editing the same file. If this is the case,
be careful not to end up with two different instances of the same
file when making changes. Quit, or continue with caution.
(2) An edit session for this file crashed.
If this is the case, use ":recover" or "vim -r test.txt"
to recover the changes (see ":help recovery").
If you did this already, delete the swap file ".test.txt.swp"
to avoid this message.
Swap file ".test.txt.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
上面的資訊已經明確的說明了原因
- 其他人或程式同時在修改這個檔案
由於Linux是多使用者多工的環境,因此很可能有很多人同時在編輯同一個檔案。
如果在多人共同編輯的情況下,大家同時儲存,這個檔案會被修改的面目全非。
這是出現這個警告的原因之一,解決方案:
- 找到正在修改這個檔案的程式或使用者,請他結束該vim的工作後再進行處理
- 如果只是檢視檔案的內容而不進行編輯行為,按O以唯讀模式開啟
- 在上一次的vim編輯時異常中斷
比如使用SSH遠端連線伺服器使用vim進行編輯時連線斷開這種情況。
根據不同的情況採用不同的解決方案:
- 如果之前的vim操作沒有儲存,按R進入恢復模式就可以找回之前為儲存的資料
- 如果確定之前的vim操作是無用的,按D刪除之前swp檔案,此時vim會建立新的swp檔案
警告資訊中的六個按鍵的作用
按鍵 | 說明 |
---|---|
O | 以唯讀方式開啟檔案 |
E | 以正常方式編輯檔案並且不會載入之前的swp檔案中的內容 (謹慎操作:有可能會造成多個使用者互相修改檔案的情況) |
R | 恢復之前未儲存的內容 |
D | 刪除之前的swp檔案,此時vim會建立新的swp檔案 |
Q | 退出vim |
A | 跟Q差不多,忽略這次的編輯行為返回到文字介面 |
多檔案編輯
vim可以同時編輯多個檔案
[root@www.linuxidc.com ~]# vim anaconda-ks.cfg test.txt
按鍵 | 說明 |
---|---|
:n | 編輯上一個檔案 |
:N | 編輯下一個檔案 |
:files | 列出本次vim指令開啟的所有檔案 |
:files
1 %a "anaconda-ks.cfg" line 1
2 "test.txt" line 0
多視窗功能
vim可以分屏編輯多個檔案
按鍵 | 說明 |
---|---|
:sp [檔名] | 如果有加檔名則以上下分屏的模式在右邊開啟一個新的檔案 否則在下面的視窗開啟當前檔案 使用vim的-o引數開啟多個檔案時會上下分屏,使用-O引數會左右分屏 |
Ctrl+w+j或Ctrl+w+↓ | 先按下Ctrl+w,再按下j或↓在上下兩個視窗間進行視窗切換 左右分屏的情況使用 ←→或hl左右切換視窗 |
Ctrl+w+q | 退出關閉游標所在的視窗 |
補全功能
vim和大部分整合式開發環境一樣包含補全功能
按鍵 | 說明 |
---|---|
[ctrl]+x -> [ctrl]+n | 通過目前正在編輯的這個“檔案的內容文字”作為關鍵字,予以補齊 |
[ctrl]+x -> [ctrl]+f | 以當前目錄內的“檔名”作為關鍵字,予以補齊 |
[ctrl]+x -> [ctrl]+o | 以擴充套件名作為語法補充,以vim內建的關鍵字,予以補齊 |
常用指令示意圖
亂碼處理
造成亂碼的原因是檔案的源編碼和vim的編碼不一致
比如:在windows中編輯好的漢字文字文件上傳到Linux開啟就亂碼了
解決方案:使用iconv工具解決亂碼
檢視是否安裝了iconv,如果沒有安裝使用yum或rpm安裝即可
[root@www.linuxidc.com ~]# rpm -qf `which iconv`
glibc-common-2.17-106.el7_2.4.x86_64
使用iconv命令轉碼
輸入/輸出格式規範:
-f, --from-code=名稱 原始文字編碼
-o, --output=FILE 輸出檔案
-l, --list 列舉所有已知的字元集
iconv -f 原本編碼 -t 新編碼 filename [-o newfile]
例:
[root@www.linuxidc.com ~]# iconv -f gb2312 test.txt -o new.txt
附錄
vim小抄
vim鍵盤圖
更多Vim相關教學見以下內容:
Vim學習指南 http://www.linuxidc.com/Linux/2013-08/89096.htm
快速學會 Vi編輯器 http://www.linuxidc.com/Linux/2013-08/88586.htm
強大的Vim 編輯器 http://www.linuxidc.com/Linux/2013-07/87544.htm
在CentOS 6.2上搭建Vim開發環境 http://www.linuxidc.com/Linux/2013-07/87363.htm
把Vim打造成優秀的C++ IDE http://www.linuxidc.com/Linux/2016-06/132262.htm
Vim技巧分享:C語言設定 http://www.linuxidc.com/Linux/2012-12/77124.htm
Ubuntu中設定Vim的行號 http://www.linuxidc.com/Linux/2012-12/75485.htm
本文永久更新連結地址:http://www.linuxidc.com/Linux/2016-08/134613.htm
相關文章