vim基本操作
Vim的幾種模式
- 正常模式:可以使用快捷鍵命令,或按:輸入命令行。
- 插入模式:可以輸入文本,在正常模式下,按i、a、o等都可以進入插入模式。
- 可視模式:正常模式下按v可以進入可視模式, 在可視模式下,移動光標(biāo)可以選擇文本。按V進入可視行模式, 總是整行整行的選中。ctrl+v進* 入可視塊模式。
- 替換模式:正常模式下,按R進入。
啟動Vim
- vim -c cmd file: 在打開文件前,先執(zhí)行指定的命令;
- vim -r file: 恢復(fù)上次異常退出的文件;
- vim -R file: 以只讀的方式打開文件,但可以強制保存;
- vim -M file: 以只讀的方式打開文件,不可以強制保存;
- vim -y num file: 將編輯窗口的大小設(shè)為num行;
- vim + file: 從文件的末尾開始;
- vim +num file: 從第num行開始;
- vim +/string file: 打開file,并將光標(biāo)停留在第一個找到的string上。
- vim --remote file: 用已有的vim進程打開指定的文件。 如果你不想啟用多個vim會話,這個很有用。但要注意, 如果你用vim,會尋找名叫VIM的服務(wù)器;如果你已經(jīng)有一個gvim在運行了, 你可以用* gvim --remote file在已有的gvim中打開文件。
文檔操作
- :e file --關(guān)閉當(dāng)前編輯的文件,并開啟新的文件。 如果對當(dāng)前文件的修改未保存,vi會警告。
- :e! file --放棄對當(dāng)前文件的修改,編輯新的文件。
- :e+file -- 開始新的文件,并從文件尾開始編輯。
- :e+n file -- 開始新的文件,并從第n行開始編輯。
- :enew --編譯一個未命名的新文檔。(CTRL-W n)
- :e -- 重新加載當(dāng)前文檔。
- :e! -- 重新加載當(dāng)前文檔,并丟棄已做的改動。
- :e#或ctrl+^ -- 回到剛才編輯的文件,很實用。
- :f或ctrl+g -- 顯示文檔名,是否修改,和光標(biāo)位置。
- :f filename -- 改變編輯的文件名,這時再保存相當(dāng)于另存為。
- gf -- 打開以光標(biāo)所在字符串為文件名的文件。
- :w -- 保存修改。
- :n1,n2w filename -- 選擇性保存從某n1行到另n2行的內(nèi)容。
- :wq -- 保存并退出。
- ZZ -- 保存并退出。
- :x -- 保存并退出。
- :q[uit] ——退出當(dāng)前窗口。(CTRL-W q或CTRL-W CTRL-Q)
- :saveas newfilename -- 另存為
- :browse e -- 會打開一個文件瀏覽器讓你選擇要編輯的文件。 如果是終端中,則會打開netrw的文件瀏覽窗口; 如果是gvim,則會打開一個圖形界面的瀏覽窗口。 實際上:browse后可以跟任何編輯文檔的命令,如sp等。 用browse打開的起始目錄可以由browsedir來設(shè)置:
- :set browsedir=last -- 用上次訪問過的目錄(默認(rèn));
- :set browsedir=buffer -- 用當(dāng)前文件所在目錄;
- :set browsedir=current -- 用當(dāng)前工作目錄;
- :Sex -- 水平分割一個窗口,瀏覽文件系統(tǒng);
- :Vex -- 垂直分割一個窗口,瀏覽文件系統(tǒng);
光標(biāo)的移動
4.1 基本移動
以下移動都是在normal模式下。
- h或退格: 左移一個字符;
- l或空格: 右移一個字符;
- j: 下移一行;
- k: 上移一行;
- gj: 移動到一段內(nèi)的下一行;
- gk: 移動到一段內(nèi)的上一行;
- +或Enter: 把光標(biāo)移至下一行第一個非空白字符。
- -: 把光標(biāo)移至上一行第一個非空白字符。
- w: 前移一個單詞,光標(biāo)停在下一個單詞開頭;
- W: 移動下一個單詞開頭,但忽略一些標(biāo)點;
- e: 前移一個單詞,光標(biāo)停在下一個單詞末尾;
- E: 移動到下一個單詞末尾,如果詞尾有標(biāo)點,則移動到標(biāo)點;
- b: 后移一個單詞,光標(biāo)停在上一個單詞開頭;
- B: 移動到上一個單詞開頭,忽略一些標(biāo)點;
- ge: 后移一個單詞,光標(biāo)停在上一個單詞末尾;
- gE: 同 ge ,不過‘單詞’包含單詞相鄰的標(biāo)點。
- (: 前移1句。
- ): 后移1句。
- {: 前移1段。
- }: 后移1段。
- fc: 把光標(biāo)移到同一行的下一個c字符處
- Fc: 把光標(biāo)移到同一行的上一個c字符處
- tc: 把光標(biāo)移到同一行的下一個c字符前
- Tc: 把光標(biāo)移到同一行的上一個c字符后
- ;: 配合f & t使用,重復(fù)一次
- ,: 配合f & t使用,反向重復(fù)一次
上面的操作都可以配合n使用,比如在正常模式(下面會講到)下輸入3h, 則光標(biāo)向左移動3個字符。
- 0: 移動到行首。
- g0: 移到光標(biāo)所在屏幕行行首。
- ^: 移動到本行第一個非空白字符。
- g^: 同 ^ ,但是移動到當(dāng)前屏幕行第一個非空字符處。
- $: 移動到行尾。
- g$: 移動光標(biāo)所在屏幕行行尾。
- n|: 把光標(biāo)移到遞n列上。
- nG: 到文件第n行。
- :n<cr> 移動到第n行。
- :$<cr> 移動到最后一行。
- H: 把光標(biāo)移到屏幕最頂端一行。
- M: 把光標(biāo)移到屏幕中間一行。
- L: 把光標(biāo)移到屏幕最底端一行。
- gg: 到文件頭部。
- G: 到文件尾部。
翻屏
- ctrl+f: 下翻一屏。
- ctrl+b: 上翻一屏。
- ctrl+d: 下翻半屏。
- ctrl+u: 上翻半屏。
- ctrl+e: 向下滾動一行。
- ctrl+y: 向上滾動一行。
- n%: 到文件n%的位置。
- zz: 將當(dāng)前行移動到屏幕中央。
- zt: 將當(dāng)前行移動到屏幕頂端。
- zb: 將當(dāng)前行移動到屏幕底端。
插入文本
基本插入
- i: 在光標(biāo)前插入;一個小技巧:按8,再按i,進入插入模式,輸入=, 按esc進入命令模式,就會出現(xiàn)8個=。 這在插入分割線時非常有用,如30i+<esc>就插入了36個+組成的分割線。
- I: 在當(dāng)前行第一個非空字符前插入;
- gI: 在當(dāng)前行第一列插入;
- a: 在光標(biāo)后插入;
- A: 在當(dāng)前行最后插入;
- o: 在下面新建一行插入;
- O: 在上面新建一行插入;
- :r filename在當(dāng)前位置插入另一個文件的內(nèi)容。
- :[n]r filename在第n行插入另一個文件的內(nèi)容。
- :r !date 在光標(biāo)處插入當(dāng)前日期與時間。同理,:r !command可以將其它shell命令的輸出插入當(dāng)前文檔。