新手剛接觸Vim,希望大蝦們推薦一些入門的練習(xí)教程,現(xiàn)在還只是把Vim當(dāng)成普通編輯器使用..還有,按Esc回到普通模式好像有點(diǎn)麻煩,要伸到鍵盤的左上角,有沒有什麼簡單的方法呢?先謝謝了!
認(rèn)證0級(jí)講師
用vim 快兩年了 看過教程也不少,總的來說還是得自己多練習(xí),當(dāng)自己覺得有需要的時(shí)候,再添加功能。這裡分享個(gè)看過的最好的教程,出自貼吧的某個(gè)朋友,寫的很好
學(xué)會(huì)盲打
設(shè)定檔先從最簡開始,在 伍級(jí) 前別考慮設(shè)定插件,千萬別硬背指令,千萬別直接取用別人的設(shè)定檔
基本上還是長時(shí)間待在 insert mode 下,會(huì)覺得 vim 也不過爾爾,也不好用,
這個(gè)時(shí)候,編輯效率可能比用原來的一般編輯器還低,別人問使用什麼編輯器時(shí),
多半會(huì)回答:vim 再配一個(gè) nano, kate, kwrite, gedit, geany 或其他 IDE 之類的
養(yǎng)成習(xí)慣待在 normal mode(normal 不是白叫的),只有輸入時(shí)才進(jìn)入 insert mode,輸入完馬上
學(xué)習(xí) normal mode 下的移動(dòng)指令,這個(gè)時(shí)候輸入文字標(biāo)準(zhǔn)流程:
這個(gè)時(shí)候,編輯效應(yīng)會(huì)恢復(fù)到和你之前使用的普通編輯器一樣,甚至有少量提高
學(xué)習(xí)什麼是 operator(指令 d y c 等),什麼是 motion(所有能移動(dòng)遊標(biāo)的指令,h j k l w e f t / ? 等等),
學(xué)習(xí) operator + motion 的方式,如 ct. (將目前遊標(biāo)到 . (點(diǎn)) 之間的內(nèi)容刪除並進(jìn)入 insert mode 準(zhǔn)備修改)
學(xué)習(xí)基礎(chǔ)的 Ex 指令,:s 什麼的
這個(gè)時(shí)候,編輯效率開始明顯提高,在用其他一般編輯器時(shí),會(huì)開始覺得不習(xí)慣和低效率
學(xué)習(xí) text-objects,知道 operator + text-objects 的方法,可進(jìn)行手術(shù)般精準(zhǔn)的定位和修改,
既然你主要用在 c/c++,舉出一些在這個(gè)情況下有用的例子:
ci" (由 change operator 和 text-object i" 組成)
這個(gè)指令會(huì)找到目前遊標(biāo)所在行的下一個(gè)" 括起來的字串,清除引號(hào)裡面的內(nèi)容,並進(jìn)入insert mode 以方便修改
用起來比解釋起來簡單,你可用const char* hello = "Hello world ."; 類似這樣的程式碼來測試
yaB (由 yank operator 和 text-object aB 組成)
這個(gè)指令會(huì)將目前遊標(biāo)所在的程式碼區(qū)塊({} 括起來的內(nèi)容,包括花括號(hào)本身)複製到預(yù)設(shè)register,
方便在其他地方用p 貼出來(當(dāng)然,寫程式碼不鼓勵(lì)copy and paste),你可用用任何一個(gè){} 來測試,然後找另一個(gè)地方p
gUiw (由 make uppercase operator 和 text-object iw 組成)
這個(gè)指令會(huì)將目前遊標(biāo)所在的 word 全部變成大寫
如將 max_size 變成 MAX_SIZE
這個(gè)時(shí)候,開始知道為什麼 vim 精確高效,而且並不是因?yàn)槿I盤無需滑鼠
習(xí)慣 operator + motion 後,發(fā)現(xiàn) . 指令很好用,多注意使用可重複的指令組合
練習(xí)使用書籤定位,q 記錄宏,使用多個(gè) register,使用 args,使用 buffer
使用其他的 Ex 指令
這個(gè)時(shí)候,想不起沒用 vim 之前的日子是怎麼過來的
開始 map 經(jīng)常反複使用的命令,開始寫 vimscript,開始知道自己需要什麼樣的插件
試推薦幾個(gè):
pathogen 或 vundle,tagbar, CtrlP, Gundo, UltiSnips,surround,Syntastic,Conque,ack.vim,vim-commentary,fugitive(如果是 git 用戶)
還有不少,但多對(duì) c/c++ 沒直接幫助,就不提了
這個(gè)時(shí)候,對(duì)其他編輯器提不起興趣,或許 emacs 除外
擁有完全個(gè)人化的 vimrc,基本上進(jìn)入化境,成為江湖上的傳說
常有旁人觀察你編輯後,激起雄心壯志想要學(xué) vim,嘗試幾個(gè)小時(shí)候因?yàn)橛X得熱鍵太不"人性化」而放棄,
但偶爾會(huì)向人提起他見過江湖上有你這麼一號(hào)人物
我使用vim有一年了.日前正要寫一個(gè)vim的cheat sheet,就提前在這裡寫下吧。
首先 vim != gvim
任何時(shí)候按下ESC鍵會(huì)進(jìn)入普通模式.普通模式下可以按下: 來輸入指令.
普通模式按i或a 進(jìn)入插入模式,這時(shí)你可以編輯文字。
現(xiàn)在你可以用vim寫東西了.
我們需要更快的編輯
1.快速的定位遊標(biāo):
2. 快速的編輯:
在普通模式下:
3. 更精細(xì)的貼上複製:
4. 搜尋
普通模式下按下 / 向下搜尋, 按?向上搜尋
5.對(duì)齊
gg=G 快速對(duì)齊整個(gè)檔案
6.標(biāo)籤操作
7. 切割窗口操作
有沒有註意到我們以上一直沒有提到vimrc和插件。
現(xiàn)在到時(shí)候了。
比如,我們coding時(shí)喜歡顯示行號(hào):指令模式下:set nu或 :set number
關(guān)於vimrc, 有很多值得研究商討的地方,你可以參考下我的vimrc, 我都進(jìn)行了詳細(xì)的中文註釋
vim 的配色有三種比較有名,solarized , molokai , badwolf
關(guān)於vim 的插件,只有這麼幾句需要說:
好了,吃飯去。 。到此。
無他,唯手熟耳。
" Arrow keys are evil map <up> <nop> map <down> <nop> map <left> <nop> map <right> <nop>
另外,Ctrl-[
也可以退出編輯模式。
嗨!我提供一個(gè)非常棒的方法:
玩 vim 遊戲!
如果你是使用 Ubuntu 系統(tǒng),請(qǐng)輸入:
或透過一個(gè)很酷的網(wǎng)頁 vim 遊戲:
vim 冒險(xiǎn)家
http://vim-adventures.com/
hey~! 我實(shí)在是不知道怎麼用 vim, 只有我的手知道. (熟能生巧)
不喜歡用 esc 可以用
多看 vim tips, 多學(xué)各種 vim 插件.
話說回來了, 人家只是個(gè)文字編輯器而已, 別本末倒置了.
分割線順便推薦一個(gè)vim 的插件集合, 叫做Janus, 它對(duì)自己的定義是Janus: Vim Distribution. 它提供了一個(gè)完整的, 必需的vim 基本設(shè)置和大多數(shù)人都需要的插件, 以及繼續(xù)自訂vim 的解決方案. 多說無益, RTFM.
用vim主要是自己定義各種功能,使用各種插件。 主要是設(shè)定vimrc, 你可以參考別人的vimrc,在github上搜尋vimrc,例如https://github.com/search?q=vimrc&ref... ,看看別人是怎麼配置的,改成自己的就ok了。
esc可以用jj 或 jk 代替。
inoremap jk <ESC>
看完自帶的教程(有中文的,下載鏈接,下載需要翻牆),但是不用死記硬背,只要記住有哪些功能就可以了。
遇到似乎可以用到這些功能的地方就開始查閱教程,然後慢慢的你查的會(huì)越來越少,越來越少,慢慢的你就會(huì)了。
舉例:
Hello World foobar
如果你想刪除foobar ,那麼你可以用ffdw
這個(gè)組合指令(f是在一行內(nèi)查詢,後面那個(gè)f就是foober 的首字母,這是指令的第一部分,將遊標(biāo)移到foobar這個(gè)字上面,d是刪除,w是選取一個(gè)詞,組合起來就是刪除一個(gè)字),非常快捷,而且都是簡單指令的組合。
然後如果你想要處理比較複雜的場景,例如
foobar foobar foobar foobar
只把前面的foo 刪掉,留下那個(gè)bar,這時(shí)候雖然vim提供了處理的功能,但是我們不用管,用宏錄製的功能(能保存你的操作,你可以簡單的重複)把簡單的指令組合起來,就可以做很多很複雜的工作了
例如上面這個(gè)例子(手頭暫時(shí)沒有Vim,憑記憶可能有錯(cuò)),
qa (將命令錄制到a這個(gè)剪貼板上{vim有好多個(gè)剪貼板,比如abcdefg……}) 3x (重復(fù)三遍刪除操作,將foo刪掉,其實(shí)也可以用f命令來搭配,對(duì)復(fù)雜的情況更適用) 0 (移動(dòng)到行首) j (移動(dòng)到下一行) q (停止錄制) 3@a (重復(fù)三遍剛才錄制的命令,3就是將命令重復(fù)3遍,@就是運(yùn)行,a就是剛剛保存的那個(gè)剪貼板)
這就解決了。
Vim 根本不難,原因在於90%的狀況都只要很簡單的一些指令的靈活搭配。
剩下10%的狀況查教學(xué)也很容易知道。你讓一個(gè)會(huì)用Vim的人默寫命令,在比較所有的命令,會(huì)發(fā)現(xiàn)人家只知道很小一部分。
上面的人說的都很詳細(xì)了,不過對(duì)於esc鍵建議用改鍵之類的換成Caps Lock這樣按起來要方便很多。
據(jù)說RMS寫Emacs的時(shí)候的鍵盤是這樣的
很明顯Esc和Control的距離要很舒服的,如果有錢也要進(jìn)一塊HHKB吧。
http://vim-adventures.com/
根據(jù)vim操作寫的小遊戲,遊戲同時(shí)練習(xí)vim操作。