1. 程式人生 > >vim技巧

vim技巧

修改 iou 工作 nor 上一個 關於 選中 重新 %s

1 Vim的幾種模式
正常模式:可以使用快捷鍵命令,或按:輸入命令行。
插入模式:可以輸入文本,在正常模式下,按i、a、o等都可以進入插入模式。
可視模式:正常模式下按v可以進入可視模式, 在可視模式下,移動光標可以選擇文本。按V進入可視行模式, 總是整行整行的選中。ctrl+v進入可視塊模式。
替換模式:正常模式下,按R進入。

  1. 啟動Vim
    vim +num file: 從第num行開始;

  2. 文檔操作
    :e file --關閉當前編輯的文件,並開啟新的文件。 如果對當前文件的修改未保存,vi會警告。
    :e#或ctrl+^ -- 回到剛才編輯的文件,很實用。
    :f或ctrl+g -- 顯示文檔名,是否修改,和光標位置。

    :f filename -- 改變編輯的文件名,這時再保存相當於另存為。
    gf -- 打開以光標所在字符串為文件名的文件。
    :saveas newfilename -- 另存為

    :browse e -- 會打開一個文件瀏覽器讓你選擇要編輯的文件。 如果是終端中,則會打開netrw的文件瀏覽窗口; 如果是gvim,則會打開一個圖形界面的瀏覽窗口。 實際上:browse後可以跟任何編輯文檔的命令,如sp等。 用browse打開的起始目錄可以由browsedir來設置:
    :set browsedir=last -- 用上次訪問過的目錄(默認);
    :set browsedir=buffer -- 用當前文件所在目錄;

    :set browsedir=current -- 用當前工作目錄;

    :Sex -- 水平分割一個窗口,瀏覽文件系統;
    :Vex -- 垂直分割一個窗口,瀏覽文件系統;

4.2 翻屏
ctrl+f: 下翻一屏。
ctrl+b: 上翻一屏。
ctrl+d: 下翻半屏。
ctrl+u: 上翻半屏。
ctrl+e: 向下滾動一行。
ctrl+y: 向上滾動一行。
n%: 到文件n%的位置。
zz: 將當前行移動到屏幕中央。
zt: 將當前行移動到屏幕頂端。
zb: 將當前行移動到屏幕底端。

4.3 標記
m{a-z}: 標記光標所在位置,局部標記,只用於當前文件。
m{A-Z}: 標記光標所在位置,全局標記。標記之後,退出Vim, 重新啟動,標記仍然有效。

{a-z}: 移動到標記位置。<br/>‘{a-z}: 移動到標記行的行首。<br/>{0-9}:回到上[2-10]次關閉vim時最後離開的位置。
:marks 顯示所有標記。

:delmarks a b -- 刪除標記a和b。
:delmarks a-c -- 刪除標記a、b和c。
:delmarks a c-f -- 刪除標記a、c、d、e、f。
:delmarks! -- 刪除當前緩沖區的所有標記。
:help mark-motions 查看更多關於mark的知識。

5.1 基本插入
i: 在光標前插入;一個小技巧:按8,再按i,進入插入模式,輸入=, 按esc進入命令模式,就會出現8個=。 這在插入分割線時非常有用,如30i+<esc>就插入了36個+組成的分割線。

插入位置的區別: 
    i:光標前   I 行首
    a:光標後   A 行尾
    o: 在下面新建一行插入;O: 在上面新建一行插入;

7.2 替換
:%s/old/new/g - 用new替換文件中所有的old。

:%s/^/xxx/g - 在每一行的行首插入xxx,^表示行首。
:%s/$/xxx/g - 在每一行的行尾插入xxx,$表示行尾。
所有替換命令末尾加上c,每個替換都將需要用戶確認。 如:%s/old/new/gc,加上i則忽略大小寫(ignore)。

8.1 基本排版
<< 向左縮進一個shiftwidth

向右縮進一個shiftwidth

9.1 一次編輯多個文件
我們可以一次打開多個文件,如 vi a.txt b.txt c.txt
使用:next(:n)編輯下一個文件。
:2n 編輯下2個文件。
使用:previous或:N編輯上一個文件。
使用:args 顯示文件列表。
vi -o filenames 在水平分割的多個窗口中編輯多個文件。
vi -O filenames 在垂直分割的多個窗口中編輯多個文件。

  1. 縱向操作
    ctrl-v後狀態欄上出現 VISUAL BLOCK 字樣,即進入縱向編輯模式。
    r 進入修改模式/I 進入行首插入模式/A 進入行尾插入模式
    Esc完成

vim技巧