vim基本操作
Vim的幾種模式
- 正常模式:可以使用快捷鍵命令贱迟,或按:輸入命令行衣吠。
- 插入模式:可以輸入文本,在正常模式下睡榆,按i袍榆、a包雀、o等都可以進入插入模式亲铡。
- 可視模式:正常模式下按v可以進入可視模式奖蔓, 在可視模式下吆鹤,移動光標可以選擇文本。按V進入可視行模式沾凄, 總是整行整行的選中。ctrl+v進* 入可視塊模式撒蟀。
- 替換模式:正常模式下保屯,按R進入手负。
啟動Vim
- vim -c cmd file: 在打開文件前,先執(zhí)行指定的命令姑尺;
- vim -r file: 恢復上次異常退出的文件;
- vim -R file: 以只讀的方式打開文件衡楞,但可以強制保存瘾境;
- vim -M file: 以只讀的方式打開文件迷守,不可以強制保存兑凿;
- vim -y num file: 將編輯窗口的大小設為num行礼华;
- vim + file: 從文件的末尾開始圣絮;
- vim +num file: 從第num行開始扮匠;
- vim +/string file: 打開file棒搜,并將光標停留在第一個找到的string上活箕。
- vim --remote file: 用已有的vim進程打開指定的文件。 如果你不想啟用多個vim會話筑舅,這個很有用翠拣。但要注意误墓, 如果你用vim谜慌,會尋找名叫VIM的服務器欣范;如果你已經有一個gvim在運行了恼琼, 你可以用* gvim --remote file在已有的gvim中打開文件晴竞。
文檔操作
- :e file --關閉當前編輯的文件噩死,并開啟新的文件已维。 如果對當前文件的修改未保存衣摩,vi會警告。
- :e! file --放棄對當前文件的修改占婉,編輯新的文件逆济。
- :e+file -- 開始新的文件奖慌,并從文件尾開始編輯建椰。
- :e+n file -- 開始新的文件岛马,并從第n行開始編輯伞矩。
- :enew --編譯一個未命名的新文檔乃坤。(CTRL-W n)
- :e -- 重新加載當前文檔湿诊。
- :e! -- 重新加載當前文檔枫吧,并丟棄已做的改動。
- :e#或ctrl+^ -- 回到剛才編輯的文件宣蠕,很實用镀层。
- :f或ctrl+g -- 顯示文檔名唱逢,是否修改坞古,和光標位置痪枫。
- :f filename -- 改變編輯的文件名易阳,這時再保存相當于另存為潦俺。
- gf -- 打開以光標所在字符串為文件名的文件黑竞。
- :w -- 保存修改。
- :n1,n2w filename -- 選擇性保存從某n1行到另n2行的內容遏匆。
- :wq -- 保存并退出幅聘。
- ZZ -- 保存并退出。
- :x -- 保存并退出葛超。
- :q[uit] ——退出當前窗口。(CTRL-W q或CTRL-W CTRL-Q)
- :saveas newfilename -- 另存為
- :browse e -- 會打開一個文件瀏覽器讓你選擇要編輯的文件侥涵。 如果是終端中芜飘,則會打開netrw的文件瀏覽窗口; 如果是gvim,則會打開一個圖形界面的瀏覽窗口裙戏。 實際上:browse后可以跟任何編輯文檔的命令,如sp等壹罚。 用browse打開的起始目錄可以由browsedir來設置:
- :set browsedir=last -- 用上次訪問過的目錄(默認)猖凛;
- :set browsedir=buffer -- 用當前文件所在目錄;
- :set browsedir=current -- 用當前工作目錄;
- :Sex -- 水平分割一個窗口试溯,瀏覽文件系統(tǒng);
- :Vex -- 垂直分割一個窗口试读,瀏覽文件系統(tǒng);
光標的移動
4.1 基本移動
以下移動都是在normal模式下。
- h或退格: 左移一個字符纽匙;
- l或空格: 右移一個字符馏段;
- j: 下移一行;
- k: 上移一行喷舀;
- gj: 移動到一段內的下一行;
- gk: 移動到一段內的上一行;
- +或Enter: 把光標移至下一行第一個非空白字符赶掖。
- -: 把光標移至上一行第一個非空白字符。
- w: 前移一個單詞,光標停在下一個單詞開頭轧钓;
- W: 移動下一個單詞開頭,但忽略一些標點;
- e: 前移一個單詞媒咳,光標停在下一個單詞末尾;
- E: 移動到下一個單詞末尾射富,如果詞尾有標點,則移動到標點;
- b: 后移一個單詞,光標停在上一個單詞開頭;
- B: 移動到上一個單詞開頭,忽略一些標點闷旧;
- ge: 后移一個單詞钝侠,光標停在上一個單詞末尾帅韧;
- gE: 同 ge ,不過‘單詞’包含單詞相鄰的標點。
- (: 前移1句哑诊。
- ): 后移1句。
- {: 前移1段及刻。
- }: 后移1段镀裤。
- fc: 把光標移到同一行的下一個c字符處
- Fc: 把光標移到同一行的上一個c字符處
- tc: 把光標移到同一行的下一個c字符前
- Tc: 把光標移到同一行的上一個c字符后
- ;: 配合f & t使用竞阐,重復一次
- ,: 配合f & t使用,反向重復一次
上面的操作都可以配合n使用暑劝,比如在正常模式(下面會講到)下輸入3h骆莹, 則光標向左移動3個字符。
- 0: 移動到行首担猛。
- g0: 移到光標所在屏幕行行首幕垦。
- ^: 移動到本行第一個非空白字符。
- g^: 同 ^ 傅联,但是移動到當前屏幕行第一個非空字符處先改。
- $: 移動到行尾。
- g$: 移動光標所在屏幕行行尾蒸走。
- n|: 把光標移到遞n列上仇奶。
- nG: 到文件第n行。
- :n<cr> 移動到第n行比驻。
- :$<cr> 移動到最后一行该溯。
- H: 把光標移到屏幕最頂端一行。
- M: 把光標移到屏幕中間一行别惦。
- L: 把光標移到屏幕最底端一行狈茉。
- gg: 到文件頭部。
- G: 到文件尾部步咪。
翻屏
- ctrl+f: 下翻一屏论皆。
- ctrl+b: 上翻一屏。
- ctrl+d: 下翻半屏猾漫。
- ctrl+u: 上翻半屏点晴。
- ctrl+e: 向下滾動一行。
- ctrl+y: 向上滾動一行悯周。
- n%: 到文件n%的位置粒督。
- zz: 將當前行移動到屏幕中央。
- zt: 將當前行移動到屏幕頂端禽翼。
- zb: 將當前行移動到屏幕底端屠橄。
插入文本
基本插入
- i: 在光標前插入;一個小技巧:按8闰挡,再按i锐墙,進入插入模式,輸入=长酗, 按esc進入命令模式溪北,就會出現(xiàn)8個=。 這在插入分割線時非常有用,如30i+<esc>就插入了36個+組成的分割線之拨。
- I: 在當前行第一個非空字符前插入茉继;
- gI: 在當前行第一列插入;
- a: 在光標后插入蚀乔;
- A: 在當前行最后插入烁竭;
- o: 在下面新建一行插入;
- O: 在上面新建一行插入吉挣;
- :r filename在當前位置插入另一個文件的內容派撕。
- :[n]r filename在第n行插入另一個文件的內容。
- :r !date 在光標處插入當前日期與時間听想。同理腥刹,:r !command可以將其它shell命令的輸出插入當前文檔。