1. 程式人生 > >Linux學習—vim大全

Linux學習—vim大全

狀態 設置 swp文件 ext fstab style 左右 使用 三種

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(按一下)

延時2秒進入命令模式

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大全