Linux學習—vim大全
目錄
vim的使用
退出模式
vim的三種主要模式
命令模式
vim的個性化配置
產生.swp文件的深入解析
一、vim的使用
vim + filename
編輯文件,當文件不存在的時候會在保存退出後自動創建文件
vim + file1 + file2 + ... 編輯多個文件
:next 下一個文件
:prev 上一個文件
:first 第一個
:last 最後一個
:wall 保存所有
:qall 退出所有
:wqall 保存退出所有
vim -o + file1 + file2
-O + file1 + file2 多文件垂直分割顯示
Ctrl + w,然後上或下 屏幕跳轉
Ctrl + w,然後v 一個文件垂直分割
Ctrl + w,然後s 一個文件水平分割
:qall 全部退出
二、退出模式
(保存退出)
: 進入退出模式
w 保存
q 退出
q! 強制退出,不保存
w! 強制保存
當文件權限為400,文件的所屬人可以使用w!
wq,x 保存退出
r + filename 將文件filename內容粘貼到當前文件
w + filename 將當前文件內容存入另一個文件filename
! + command 將命令執行結果直接插入到相應位置
r! + command 將命令輸出結果寫入在光標所在行的下一新行
.! + command 將命令輸出結果替換光標所在行內容
ESC(按一下)
ESC(按兩下) 立即進入命令模式
/關鍵詞 向下搜索
?關鍵詞 向上搜索
%s/要查找的內容/替換為的內容/修飾符
其中的分隔符/可以換成@
修飾符:
% 對全文生效
i 取消大小寫
g 全局替換,不加g每一行只替換第一次出現的
三、vim的三種主要模式
退出模式
插入模式
(文本編輯)
命令模式
四、命令模式
(移動光標,復制,剪切,粘貼,撤銷,重做,搜索,進入其他模式)
h(左)l(右)k(上)j(下) 移動光標
w 單詞間移動
H 跳轉至頁首
L 跳轉至頁尾
M 跳轉至頁中間
gg 文件的首行
G 文件的尾行
數字 + G 跳轉至第幾行 或者 退出模式下 數字 + enter
i 在光標所在位置進入插入模式
I 在光標所在行的行首進入插入模式
a 在光標所在位置的後一個字符進入插入模式
A 在光標所在行的行尾進入插入模式
o 在光標所在行的下一行創建空白行並進入插入模式
O 在光標所在行的上一行創建空白行並進入插入模式
ZZ 保存退出
ZQ 不保存退出
u 撤銷,最終至文件打開時候的狀態
U 直接撤銷至文件打開時候的狀態(僅對一行內容有效,修改期間換行則失效)
. 重復上一個操作
e! 將文件直接恢復到打開狀態
v 從光標開始的位置上下左右選中內容(針對字符)
V 從光標所在行的位置上下選中整行(針對行)
r + 任一字符 替換
R 進入替換模式。可以多個字符修改
dd 剪切光標所在行內容
dw 剪切光標所在的整個單詞
yy 復制光標所在行內容
yw 復制光標所在的整個單詞
p 在光標所在行的下一行粘貼或者光標所在處向後
P 在光標所在行的上一行粘貼或者光標所在處向前
Ctrl + f 向下翻屏
Ctrl + b 向上翻屏
Ctrl + d 向下翻半屏
Ctrl + u 向上翻半屏
五、vim的個性化配置
/etc/vimrc 針對所用用戶
~/.vimrc 針對指定用戶
(先/etc/vimrc再~/.vimrc,後者的效果會覆蓋前者的效果)
set number 或者 set nu 顯示行號
set nonumber 或者 set nonu 取消顯示
set ai 自動縮進
set noai 取消縮進
set list 顯示Tab鍵為^I和換行符為$
可以區分Tab、空格、換行
set nolist 取消
但是上述的配置會在退出之後設置不予保存,可以:
vim /etc/vimrc
set ai/nu/list 添加到第一行
wq保存退出
永久設置成功
六、產生.swp文件的深入解析
有時候我們利用vim編輯文件,會出現Swap file ".xxx.swp" already exists!的字樣。下面來分析這種情況:
①利用watch命令,可以動態的刷新一條命令的輸出結果,
在終端1下輸入watch -n 1 ls -al /app 每隔一秒刷新/app目錄下的情況
②然後打開另一終端(命名為終端2)輸入vim /app/fstab
發現終端1出現了.fstab.swp文件
③當我們編輯fstab之後,正常保存退出或者直接退出,終端1的.fstab.swp文件不在了
④我們聯想下命令模式下為什麽u可以一直撤銷至最終打開的狀態;當我們對fstab文件不停地大量修改的時候,我們發現終端1的.fstab.swp文件大小一直增大,fstab文件大小不變。
⑤再打開一終端(終端3),輸入killall vim,即表示非正常退出,終端1的.fstab.swp仍然存在
⑥在終端2輸入cat fstab,結果顯示的是文件沒有修改之前的內容,即沒有保存
最終得出:當.fstab.swp存在時,vim fstab會出現Swap file ".xxx.swp" already exists!字樣{一種情況是另一個用戶正在編輯,一種情況就是上次編輯非正常退出}
其實這個文件存放著上次修改文件但未保存的內容
⑦如果想正常編輯fstab文件,可以在終端2輸入vim -r fstab,出現提示按enter
發現終端1出現了一個.swp.swo文件
這是因為原來的.swp沒有刪除,再次編輯fstab文件時,會再次出現一個.swp文件,但是.swp文件已經存在,所以只能用另外一個名字.swo(防止重名)
⑧這次:wq正常退出之後,.fstab.swo消失
⑨對於最後的.fstab.swp文件我們可以rm .fstab.swp刪除
也可以vim fstab進入之後輸入D選項然後正常保存退出
Linux學習—vim大全