vim快速指南:python
vim 使用技巧:
一、認識.命令
最理想的編輯模式:一次按鍵移動,一次編輯操做
.命令能夠重複上一次的修改操做
在普通模式下:
j切換到下一行
A切換到本行的行末,並進入插入模式
注意:通常狀況下將j.兩個命令聯合使用是比較常見的選擇
可能這裏你以爲.命令並無什麼特別的地方,but「上一次的修改」實際上是有不少含義滴
好比:
普通模式下:
x命令表示刪除當前行光標所在字符,下一次執行.命令則是刪除當前光標字符操做
>G命令表示修改當前行到行末(>gg)的縮進層級,下一次執行.命令則是繼續執行修改縮進層級;[此處好好感覺下>G和>gg命令,其實就能感受到.命令的做用區別]
dd命令表示刪除一行,下一次執行.命令則繼續執行刪除一行shell
插入模式下:
從進入插入模式[a|i|o|O等]的那一刻起,到結束插入[esc],vim會記錄每一次按鍵操做,並造成一次修改
A命令在行末任意追加一個字符,並ESC退出,下一次執行.命令,將執行整個插入操做
應用實例:
在每一行末尾增長分號(;)[A命令進入末行並進入插入模式,輸入;字符,並執行j.命令,在下一行進行追加分號(其實這裏也可使用$a代替A,不過就比較耗費鍵盤啦,其實更多的是消耗時間啦)
注意:
在vim中若是能使用複合鍵的,仍是儘可能使用複合鍵,不只能提升效率,對於鍵盤以及手指的損耗,仍是挺有幫助滴&*&。如下是vim中部分複合鍵的相關對應關係:
C c$(cc是剪切一整行)
s cl(剪切當前字符,並進入插入模式)
S ^c
I ^i
A $avim
身在江湖,有時候退是爲了更好的進!讓咱們爲了部落,爲了聯盟,後退吧。。。。德瑪西亞
應用實例:
小技巧,替換一個字符的先後字符,能夠先進行當前字符的刪除操做,以後在從新編輯。
例如:須要在+號先後各加一個空格,這樣能夠先刪除+,而後輸出空格+空格,在使用.命令替換
var Andy = "method("+argu+","+argu2+")"----》 var foo = "method(" + argu + "," + argu2 + ")";
fa匹配一行中a字符所在的第一個位置;使用格式:f{char}
;匹配一行中第二個匹配字符的位置(和上一個f操做息息相關噢 ).
;命令會重複查找上一次f命令所查找的字符,同時,命令怎會向前查找f命令匹配的字符
執行命令:f+;s + ;';.';';.'
注意:f+匹配一行中第一個+號;s + 先剪切+字符,而後修改成空格+空格;';.'跳轉到第二個匹配字符,並執行上一次修改操做
戰爭就是移動,改變,出擊,誰可以快速作出決策,誰就是最終的勝利者!
讓咱們的編輯和修改操做都能在最大短期進行移動和修改,這纔是最佳的編輯方式!
一些經常使用的快捷移動和修改操做總結:
做用 操做 重複 回退
修改 {edit} . u
行內向後查找字符 f{char} ; ,
全文查找下一匹配 /pattern n N命令行
快不必定是最好的,誰能作大精肯定位,誰就是最終的王者!
vim中另一個批量單鍵命令操做*,查找全文中所有光標所在單詞,n跳轉到下一個單詞
cw剪切一個單詞,並進入插入模式
須要注意的是:在英文文獻中不少單詞根據語境不通,從而表現的含義也是不相同的,所以在有文章進行批量替換的時候,須要注意下,那些單詞能夠進行替換,那些單詞不能夠進行替換,
所以在想要執行大批量替換的時候,須要注意下,是否能夠直接使用:%s/char/char1/g命令去進行操做!
在須要對語義進行判斷後進行修改的,最好仍是不要圖快,能夠先使用*全文匹配單詞,修改完成後依次執行n和.命令進行逐個替換!
注意:'.'命令必定是在光標所在位置的原子操做下生效的。也就是光標在那個位置,進行的修改操做纔可使用.命令對象
2.普通操做
普通模式下其餘一些快捷鍵的操做:
根據光標位置不一樣,刪除一個單詞操做:
光標在最後:db命令,刪除從光標起始位置到單詞開頭的內容,保留光標位置的當前字符(可使用x命令再刪除)
光標在首字母:b命令,將光標移動到單詞的開頭,dw刪除一個單詞
daw命令,刪除整個單詞
綜合比較上面三個命令,第三個命令能夠理解爲一個原子操做,所以在包裝修改命令的時候,是可使用.命令記錄刪除整個單詞操做的it
技巧:
可以重複,就不要使用計數
嘗試理解d2w,2dw以及dw.三者之間的區別。當刪除更多的單詞時候,咱們是使用dnw仍是dw加上n個.命令。對於準確性和回滾可操做性來講仍是後者比較實用的
注意:使用次數的一個好處就是可以保留一個完整的、連貫的撤銷歷史記錄。若是能夠把須要修改的對象當作一個連貫的,認爲是一個原子操做的話,那麼使用計數仍是比較方便的。(c3w)io
dap命令,刪除一段
gUap命令,將一段文字轉換成大寫(gu小寫)
gUaw命令,將一個單詞轉換成大寫
g~命令,反轉大小寫
gu命令,轉換爲小寫
gU命令,轉換爲大寫
>增長縮進
<減小縮進
gg=G命令,自動縮進整個文件。(gg到首行,=G執行全文自動縮進)效率
插入模式:
ctrl+w 刪除一個單詞
ctrl+u 刪除至行首vimrc
可視模式:
須要注意的是,在可視模式下,不少命令和普通模式下的命令都是能夠通用的!
vi命令進入可視模式
viw進入可視模式,並高亮當前光標所在單詞
c命令,剪切掉光標選中內容,並進入插入模式、
Vj高亮選中兩行,>.縮進(vj>.連續縮進兩行兩次級別縮進) 寫python時候比較實用些技巧
命令行模式:
調用外部shell命令,命令行模式輸入!command
單獨調用一個shell,命令行模式輸入!shell
vim 管理多個文件:
注意:vim中對多窗口的操做都是在ctrl+w的前提下
ctrl+w+v 拆分豎屏
ctrl+w+s 水平拆分
ctrl+w+h 切換到左邊屏幕
ctrl+w+l 切換到右邊屏幕
ctrl+w+c 關閉活動窗口(:close)
ctrl+w+o 只保留活動窗口,關閉其餘(:on)
#vim .vimrc set ts=4 sw=4 expandtab (設置tab寬度,tabstop=4 shiftwidth=4 expandindent空格代替製表符) set autoindent smartindent 設置自動縮進,爲c程序提供自動縮進 set foldenable foldmethod=indent 打開摺疊功能。(zi打開摺疊,zm關閉摺疊) nmap <c-n> :tabnext<cr> nmap <c-p> :tabprevious<cr> 代碼補全 set completeopt=preview,menu 注意: manual 手工定義摺疊 indent 更多的縮進表示更高級別的摺疊 expr 用表達式來定義摺疊 syntax 用語法高亮來定義摺疊 diff 對沒有更改的文本進行摺疊 marker 對文中的標誌摺疊