如何優雅地使用 Vim?
一直在使用vim,卻用的跟個記事本沒兩樣,又土又搓,也不知道有什麼比較好的靠譜的書或教程……大家有什麼建議
根據 Bram 前後幾個關於高效使用 Vim的視頻,大家每天需要花很多時間來編輯:代碼、文檔、郵件、日誌 等等,除去這些外,還要分時間參加會議和人溝通,每個人的時間卻都是不夠的,高效而優雅使用 Vim 無外乎:
1. 檢測不高效的地方:你的整個工作流里,什麼地方比較浪費時間?
2. 尋找一個更快的方式:官方文檔,學習他人經驗,自己編寫 VimScript
3. 使它習慣化:開始使用,並且不斷完善
以上三點反覆循環,能讓你的 Vim 越來越順手。所以重點是根據自己的工作流不斷迭代。而不是象大部分教程那樣教你安裝一大堆插件。插件都是別人寫的為了解決通用需求而提煉的東西,和每個人的具體需求都有差別。上面這三點我屢試不爽,隨著時間增長,有種越來越順手的感覺,舉幾個我具體碰到的例子:
問題1:邊開發邊參考網上解決方案的問題
比如碰到問題搜到一段代碼,需要試一下,一會又看會 Chrome ,一會又切回 GVim 里去寫代碼,反覆 ALT_TAB,有時候中間使用了一下資源管理器或者其他程序,ALT_TAB 的順序就會被打亂,你一切換就切跑了,十分低效。
於是我用 VimScript + 內嵌 Python 寫了一個功能,按快捷鍵可以讓 GVim 在透明/不透明兩種狀態間自由切換:
就是 VimScript 簡單封裝一個函數,裡面用內嵌 Python 找到 GVim 的頂層 HWND,並設置透明度。平時默認不透明,需要參考其他資料時切換成透明,參考完了又快捷鍵切換回來,感覺比緣來切來切去順暢很多。
問題2:瀏覽文檔時的窗口滾動問題
比如你在抄寫或者改寫一段代碼,窗口分為左右兩個,左邊是你引用參考的源代碼,右邊是你正在編輯的源代碼。你抄著抄著,抄到左邊最後一行了,或者你想前後看看正在引用的文本,你就需要將焦點從右邊切換到左邊,滾動,再切換交點回來,十分麻煩,於是擼一小段 VimScript 來解決這個問題:
" 0:up, 1:down, 2:pgup, 3:pgdown, 4:top, 5:bottom
function! Tools_PreviousCursor(mode)
if winnr("$") &<= 1
return
endif
noautocmd silent! wincmd p
if a:mode == 0
exec "normal! &
elseif a:mode == 1
exec "normal! &
elseif a:mode == 2
exec "normal! ".winheight(".")."&
elseif a:mode == 3
exec "normal! ".winheight(".")."&
elseif a:mode == 4
normal! gg
elseif a:mode == 5
normal! G
elseif a:mode == 6
exec "normal! &
elseif a:mode == 7
exec "normal! &
elseif a:mode == 8
exec "normal! k"
elseif a:mode == 9
exec "normal! j"
endif
noautocmd silent! wincmd p
endfunc
把這個函數綁定到 ALT_U, ALT_D 兩個按鍵上,你正在編輯著當前文檔時,不用退出 INSERT 模式,更不用切換窗口交點,直接 ALT_U, ALT_D,就可以上下滾動正在參考的文檔內容了,有了這個改進後,我的工作又高效了那麼一點點。
同理,Quickfix 窗口經常用來查看編譯錯誤,或者 Grep 結果,我也寫了一個專門針對 Quickfix 窗口的滾屏函數,不用切焦點隨時瀏覽 Quickfix 內容。
問題3:Tag Preview 十分低效
默認 CTRL-] 可以跳轉到 Tag 定義處,但有時候我就像看一眼,並不像把當前文檔給切走,也不想預覽下其他文件就開一大堆文件,污染 buffer list。後來發現一個快捷鍵 &
用了一段時間又發現兩個問題:每次 &
需要預覽時按下 「ALT+;」,右邊彈出預覽窗口,並且高亮符號名稱,下面顯示該 tag一共有 3處定義,現在正在查看第1個定義,連續按下 "ALT+;" 可以將右邊預覽窗口切換到下一處定義,切換到最後一個了又會折頭到第一個。
配合前面的當前窗口控制其他窗口滾動的代碼,編輯模式下直接 "ALT+;" 打開 tag預覽並切換到你想要的定義處,然後 ALT+U, ALT+D 上下滾動預覽窗口來查看前後內容,看完了 "ALT+SHIFT+;" 就可以關閉預覽窗口。
從開始到結束不需要切換窗口交點,更不需要切換編輯模式,還沒有 &
具體代碼見:
https://github.com/skywind3000/vim/blob/master/autoload/asclib.vim#L365
後面繼續迭代,有時在函數調用時候,想不起該函數的參數了,需要查看一下原型(聲明和參數),不需要打開整個預覽窗口查看實現,我就又開發了一個查看函數原型的 VimScript 函數,綁定到 ALT_Q 上,同樣不需要退出插入模式:
按 ALT_Q 可以循環顯示該函數原型的多處定義,就在最下面一行,連 Preview 窗口都不需要。有的自動補全插件可以顯示函數的原型,比如 YCM,但是支持的語言很少,你換個語言,YCM就不能幫你顯示原型了,這時 ALT_Q 來查看原型支持多達 85 種 Universal Ctags 支持的語言,基本滿足我的需求,我平時主要用的編程語言大概有 4種,如今不管寫什麼但凡想不起定義來的時候,ALT_Q 一下就出來了,簡潔明了。
問題4:代碼片段
個人編碼習慣,經常輸入一些格式化注釋:
//---------------------------------------------------------------------
// 這裡是注釋
//---------------------------------------------------------------------
以前基本都是複製粘貼,或者重新敲一遍那麼多減號,每次都覺得有些麻煩。久而久之就想有沒有更好點的方法,於是繼續編寫 VimScript 用來快捷鍵一鍵生成我要的這個注釋框,順暢了不少,又進一步添加了不少一鍵生成的文字模版,比如 copyright 信息,簡單的一個帶 main函數和一些 include 的代碼框架。
期間發現了 UltiSnip ,是比較好用,就是沒有針對 vim 8 / neovim 進行非同步優化,比較慢,打開新文件速度慢了不少,所以我目前還是使用自己的 VimScript 實現一些簡單模版的代碼片段快速插入。
問題5:加速 Cygwin 開發
調試跨平台代碼時,Cygwin 是一個離不開的東西,同一個功能,我一會需要用 MinGW 編譯測試一下,一會又需要用 Cygwin 測試一下。傳統編譯 Cygwin 無外乎打開 Cygwin 的終端窗口,調用 make 或者 gcc 編譯當前代碼,然後又運行,窗口切來切去,十分彆扭,於是開始想,有沒有可能同時在 GVim 裡面快捷完成 MinGW 和 Cygwin 的一鍵編譯和運行呢?
之前比較麻煩,但是 Vim 8.0 和 NeoVim 發布後提供了後台任務機制,於是我擼了個插件 :AsyncRun:https://github.com/skywind3000/asyncrun.vim
使用 ":AsyncRun [shell command]" 來用後台運行的模式代替原先的阻塞式的 「!」 命令。
然後設置了 F7 編譯 MinGW 程序:
:noremap &
並設置了 F8 編譯 Cygwin 程序:
:noremap &
繼續設置了其他快捷鍵用於打開 cmd窗口運行剛才的 MinGW程序或者 Cygwin 程序
這樣不切換 Vim,不用打開 Cygwin 窗口,不用敲命令,一個快捷鍵,完成了 Cygwin 的編譯,自此調試跨平台程序順暢了很多。
問題6:加速 Android NDK 開發效率低
先前我在開發 Android 下 OpenSLES 的相關功能時,先要寫個 NDK工程,又需要命令行編輯,然後導到 Eclipse 裡面或者 Android Studio 裡面,寫兩行 java ,做一個 gui 來調用剛才 NDK生成的 .so 動態庫,十分彆扭,每次改一個地方就需要折騰一半天才看得到效果,使用頻率最高的:「編輯-編譯-運行」 循環如果無法做到足簡短緊湊的話,平時工作急不死你。
於是我開始考慮,對於大部分非 GUI的 NDK功能,有沒有可能象開發調試 Windows 命令行一樣的只需要寫 C/C++,不需要外面套一層 java gui,並且,繼續象 MinGW/Cygwin 一樣的做到一鍵編譯,一鍵運行呢?
於是結合前面的 AsyncRun 插件和一些少量的 Python + VimScript 腳本,實現了編譯和運行:
F9 按 Android 命令行程序編譯 NDK代碼或者工程,並非同步調用 adb 上傳到設備的 /data/local/tmp/ 下設置好 755
F10 打開 cmd窗口,調用 adb 運行剛才編譯的文件,然後退出。
支持模擬器和真實設備,最終 android下面整個 「編輯-編譯-運行」 的工作流比以前縮短了很多,跟開發PC命令行程序一樣的開發 Android NDK 程序,比起以前快多了。
類似的功能還有很多,比如玩 Prolog 時,Vim 裡面寫好了程序,不想每次打開 SWI-Prolog 的 GUI窗口,手動在那裡載入半天,程序修改完又要在 SWI-Prolog 里敲一堆命令來複位載入運行,後來也直接集成了一個快捷鍵完成這些事情。
不用換一個語言就換一個 編輯器/IDE 那麼麻煩,那麼多不同語言不同平台的開發任務,全部都用 Vim 解決了,還跟原生的一樣。
問題7:高效的 Grep
在工程中查找字元串,對於特定語言使用 gtags / cscope 之外,對於通用語言,傳統的 grep 用的也比較多。傳統 vim 內 grep 不支持非同步, 需要等待 Grep 結束後才能返回,並沒有很好的跟進 Vim8/ NeoVim 的非同步機制,於是用我前面前面定義的 AsyncRun 插件來配合使用:
:AsyncRun! grep -n -R word .
:AsyncRun! grep -n -R &
:AsyncRun! -cwd=&
其中 &
問題8:日常小工具
之前學習做爬蟲時,經常從網上複製一些 html 片段,都是擠在一起的,需要格式化後查看的更清楚一點,類似這種小功能,基本懶得再去找專門的格式化工具,三分鐘幾行 VimScript 就搞定了:
function! asclib#html_prettify()
if ft != "html"
echo "not a html file"
return
endif
silent! exec "s/&<[^&>]*&>/
/g"
silent! exec "g/^$/d"
exec "normal ggVG="
endfunc
將該函數綁定到快捷鍵上後,粘貼 html 到 vim 里一鍵就完成了格式化工作。我在 Vim 里寫了大量類似的小工具,比如GTAGS支持(GTAGS官方插件太難用,又不支持Vim8的非同步模式),比如一鍵 touch 當前項目 wsgi 的主文件,源代碼頭文件快速切換(有一個類似插件,但是我嫌它太難用了),快速打開 Zeal 查看 Dash 文檔。。。。。
這些都是圍繞自己工作習慣來優化的,這些具體的問題都不是拼湊通用插件能解決的。編寫 VimScript 是一件值得花時間學習的技巧,當你熟練掌握後,你就脫開了各種插件的束縛,能夠讓你的 Vim 日常使用得以不斷的進化再進化,這遠遠不是堆砌插件所能比的效果。
回顧一下:
磨刀不誤砍柴工,熟練掌握 VimScript,熟讀官方文檔的情況下,堅持:「發現問題,找到更高效的方法,習慣化」 的三個循環,讓我工作流在不同地方都變的優雅和流暢了那麼一點點,日積月累,流暢的編輯體驗讓身心愉悅。
其他編輯器/IDE的效率是常數,上手以後效率就很難提升了,Vim效率是變數,越調教越順手。它的反面,低效的習慣是:
1. 你已經學會編輯器的基本使用方法了,如不花間去學習新的技巧的話,將永遠停留在最原始的使用方式,得不到提高。
2. 你想要學習一切技巧,讓自己每個步奏都用最優方式解決的話,你又會浪費大量時間,學習一大堆永遠用不上的東西。
3. 擺弄各種插件,插件能做的可以做一下,插件不能做的或者做的不太好的,束手無策。
更多參考:
《Five Minute Vimscript》,快速學習 VimScript
官方必讀1:h index (Vim 中所有默認鍵位說明)
官方必讀2:h quickref(速查手冊)
《Practical Vim》,推薦學完 vimtutor 開始使用時閱讀。
《Learn Vimscript the Hard Way》,VimScript 上手必備。
擴展你的鍵位:《Vim 中正確使用 Alt映射》
----
超脫堆插件的誤區,根據你的日常工作情況,不斷打磨編輯器的利爪吧。
綜述
「飛花摘葉皆可傷人,草木竹石均可為劍」 。總是看到同行樂此不疲的討論著各種編輯器,每每看到各大論壇月經帖,各種關於編輯器的聖戰也是挺無奈的。擺正心態,工具而已不必太執著,重要的是使用工具的人,切勿本末倒置。
言歸正傳,首先你需要了解 Vim 的基本用法和設計思想,這是一個文本編輯器,為了高效編輯文本(代碼)而生,不然你非要 Vim 當成記事本或者 IDE 來用,那怎麼也優雅不起來。入門可以看看 vim tutorial,深入可以找一些書和視頻來研究,網路的資源也多得很,總之先存活下來,把工具融入到平時的工作中,遇到問題解決問題,不斷的積累中就熟悉了工具。
7個編輯習慣: Seven habits of effective text editing 2.0 - Bram Moolenaar
配置
掌握了基本的使用技巧之後,就會需要配置一個用得順手的基本配置(一般配置,插件等),我的配置託管在 GitHub 上,便於版本控制及備份,通過環境判斷可以使 OS X, Linux, Windows 三平台 Terminal GUI 能共用一套配置,使不同的工作環境下保持相同的習慣。
- My Vimrc
- maximum-awesome
插件
Vim 得益於廣大開發者的支持,各種繁多的插件把 Vim 武裝得更加高效強大。我是用 vim-plug 管理插件便於升級維護,我用到的插件在我的 Vimrc 里可見。(Emacs 以及許多後起之秀,如 Sublime,Atom 還有微軟家的 Visual Studio Code都有完善的包管理器)
更多的可以根據自己需要去善用搜索。vimawesome
外觀
選擇自己喜歡的配色和字體,好的感官才有好的靈感,賞心悅目也容易提升效率,顏值即正義。如果使用環境在 Windows 下,強烈建議安裝 MacType,這才是字體的正確渲染方式。日常的 theme 是 Tomorrow,日常的使用編程字體是 Input 。
更多的 theme : vimcolors
貢獻
審美不錯的可以寫寫配色主題;也可以根據自己的需要寫一些好用的插件;自己編譯屬於自己的 Vim 版本,添加自己喜歡的功能,回饋開源社區。有能力的也幫助下烏干達兒童。
硬體
硬體方面一個大的高分屏加一個好用的藍牙機械鍵盤,據說還有人用腳踏板 ( emac 黨)
秀下我自己的鍵盤吧
如果對你有幫助請我喝咖啡吧 =)
HTTPS://QR.ALIPAY.COM/FKX04267RUMFSWO2GJ2JC2 (二維碼自動識別)
在終端(命令行)中輸入 vimtutor 或者 gvimtutor 並回車。。看完之後再在 Vim/Gvim 里輸入 :h 並回車。
PS: Google vimcdoc 可以找到中文文檔的下載地址。首先我們要知道,Vim是一個需要學習的編輯器,如果只是使用而不進行專門的學習的話,是很難理解到Vim的精髓的。同樣,Vim也是需要練習的編輯器,如果只是學習而沒有實踐的話,那也是浪費時間(除非你記憶力相當好,以後使用可以回憶起來,但是Vim的命令真心太多了~)。既然要很優雅的使用Vim編輯器,自然需要對Vim有相當的了解,這裡就簡單的列舉幾個我認為Vimer需要理解和掌握的概念。
# 注1:本文的前提是讀者已經會基本的Vim命令,如果是剛剛接觸Vim,收藏一下就可以了,沒必要現在看。
# 注2:這不是一個詳細的教程,只是簡單的指出Vim中比較重要的概念和命令。
# 注3:為了表達的需要,所有的實例都是用英文,游標的位置使用星號,如下
I am a V*imer and Emacser, they are both great tool.
如果是插入模式,*號就是游標的位置;如果是常規模式,*號和V位置重合。
# 注4:[N] [I] [V] [C],表示在這種模式下面使用這個命令。下文會有講解。
# 注5:寫著寫著真心累了,然後就偷懶了。。。
- 瀏覽文本的時候,一般使用Normal模式
- 編輯文本的時候,一般使用Insert模式
- 處理多行文本的時候,一般使用Visual模式
- 更高級的功能和設置的時候,一般使用Command-Line模式
2. 常用的編輯命令
你需要明白下面的基本編輯命令:
## 下面簡單的列舉常用的命令,不是很全,可以自己看相關書籍或者文檔
i a/A s/S o/O # [N]這些是進入Insert模式使用的命令,還有很多,列出常用的
r/R # [N]這兩個是替換字元的命令
d x/X # [N]這是刪除命令
u C-r # [N]這是undo redo
y p/P # [N]這是複製粘貼
... 此處省略上百字 ...
## 上面的命令基本可以完成任務了,但是想要優雅,還不過,你需要知道簡潔的命令
## 下面的命令其實是很多命令的組合
dd # 刪除一行
yy # 複製一行
C # 刪除本行游標後面的文字,然後進入Insert模式
... 此處省略上百字 ...
## 既然要優雅,編輯器自帶的東西是遠遠不夠的,你需要:
1. 尋找各種插件來滿足自己的尋求
2. 自己定義按鍵,定義函數,設置不同的編輯器參數
... 這一步將需要花費你一輩子的時間 ...
## 首先是基本的移動命令
hjkl # 基本的移動命令
C-d/u C-f/b C-e/y # 滾屏命令
zz zt zb # 非常好用的視圖移動
H M L # 游標單屏移動
gg G # 文本開頭,文本結尾,3gg是移動到第三行
0 $ # 行首行尾
... 省略N個字 ...
## 然後是更加精確的定位級別的命令
f + 字元 # 搜索一行中的字元,然後移動,還有F、t、T命令
/ + 更多字元 # 全文搜索然後移動,還有?命令
模式匹配 # 這個是更高基本的了
... 省略N個字 ...
## 幾乎任何命令和使用重複的功能
如果你要滾屏然後C-f C-f C-f的慢慢的滾,如果使用重複3 C-f就OK了;
如果你使用dd刪除,如果刪除5行,使用5 dd就OK了;
如果使用p粘貼,要粘貼3次,3p就OK了;
發揮自己的想像力吧,Vim的重複無處不在,比如下面的例子:
3fe 5j 7C-u
... 省略N個字 ...
## 狹義的文本對象
I am a V*imer and Emacser, they are both great tool.
# 如果按下 diw,Vimer就會刪除
# 如果按下 das,整個句子都會刪除
# 好吧,大概理解了iw指的是一個單詞,as值得是一個句子,更多的有aw is ab a[ a} i" a" 好多啊。。。
... 省略N個字 ...
## 廣義的文本對象
1. 我們要明白當前游標是一個位置。
2. 我們會使用位置移動命令比如f3.
=&> 那麼兩個位置就形成了一個文本對象:
所以,試試 3dfe d3fe dgg dG這些命令就偉大了!
... 省略N個字 ...
對,Vim是可以同時編輯多個文件的,這個不贅述了。
... 省略N個字 ...
要想優雅,必須要多窗口編輯啊,你要知道如何分窗口,如何在窗口之間快速的移動。
... 省略N個字 ...
很好,終於到了配置級別的了。
顯示行數?可以!
自動保存?可以!
自動補全?自動縮進?更好的色彩?。。。。
簡而言之:你想要的都在這裡!
... 省略N個字 ...
多剪貼板 # 複製內容到不同的粘貼板
書籤 # 實現快速調整
模式匹配
tag和文件跳轉
... 省略無窮個字 ...
a. Vim需要系統的學習才能真正的體會它的強大。
b. Vim書籍推薦,《學習Vi和vim編輯器(影印版)》,Vim的書籍不多,來一本看一本吧,看一本之後,其他書籍一兩個小時就可以看完。
c. 無論你是否喜歡Emacs,你都要學習使用它。Vim影響你如何在Vim裡面編輯,Emacs影響你如何在所有程序裡面編輯。 # 如果你不接觸linux或者mac,emacs或許可以不學
d. 我對emacs和vim的看法:都是神器,都值得掌握!到最後你會發現無論哪個都無法滿足你,但哪個都無法捨棄。個人感覺,對程序員而言,Emacs的對職業生涯的影響力更大。
現在可以回答你的問題,如何優雅的使用Vim:
- 把Vim設置為系統的默認編輯器,把Caps Lock換成ESC
- 系統的學習Vim,有時間就通讀Vim幫助文檔
- 使用Vim一兩年後學習使用Emacs編輯器,然後繼續使用Vim
自然是 exVim: Home
先用vim寫完代碼,然後寫文檔,然後隨機刪除注釋並隨機將部分代碼寫的模糊而簡約,這是wabi-sabi的精神,一個具有粹之眼的程序猿能夠讀懂你的代碼
滿足惡趣味的吐槽結束剛剛在別處答了類似的問題,所以就不重複了(雖然我在別處也只是在說你們可以參考這個那個和那個)Vim 比起 IDE 的優勢是什麼?所以寫總結吧:1. 禁止掉hjkl並使用高效的方式移動游標 ,參見 Habit breaking, habit making非行內移動在鏈接的評論中2. 你需要知道vim的一些基本知識,比如text-object和Operator-pending mode 參見 Vim London January in review參見 :h omap-info參見 Practical Vim3. 用Bundle管理插件大概是常識吧...4. 去看http://vimcasts.org 和Practical Vim5. 像是多文件管理呀,buffer呀,windows呀,tab呀,vimgrep呀什麼的,我也不太清楚最佳實踐是怎樣的,所以去看http://vimcasts.org 和Practical Vim罷....6. 去看http://vimcasts.org 和Practical Vim罷(因為很重要所以說了三次)然後我就去邀請vim專家狐狸君了優雅,可用於指物優美雅緻。我覺得這個詞很可能屬於 「一眼詞」,意思是當你看了最開始的那一眼後,大概就會判定其優雅抑或不優雅。實際上,判定第二眼的優雅涉及的東西可能太多,也容易太深入,恐怕不是那麼容易說得清楚明白。因此,還是談第一眼的優雅要容易一點。(關於第二眼的優雅這麼深入的東西,不太適合我這麼膚淺的人~)
但是第一眼能看到什麼呢?第一眼只能看外表 ,所以就針對 vim 的主題說一點個人的看法吧。這種事情屬於個人審美範疇,主觀因素佔據大部,並無標準,以下內容可隨意一閱。
對於主題,其實配色上並沒有什麼可說的,可冷可暖,可紅可綠,挑看著順眼的就行。區別在一些細節之處:
從左到右依次為:junegunn/seoul256.vim,morhetz/gruvbox, liuchengxu/space-vim-dark,可點擊大圖查看,前兩個是比較流行的 vim 主題,第三個是我模仿 spacemacs-dark-theme 的 vim 主題(這算黑別的主題嗎?大家不要誤會,這些主題都是非常不錯的)。不知道大家對圖中圈出的側邊什麼看法,是不是覺得第三個比前兩個要優雅 ?-_- 這裡顯示的 ale 的 warning 與 error sign, 如果不是設置為圖中的 . 樣式,使用 &>&> 等諸如此類的標記,恐怕會更丑。對於 warning 與 error, 通過不同的前景色區分就可以了,如果在加上背景色反而會顯得像一塊塊的補丁貼在那裡(當然,你也可以理解為更 「醒目」)。
其他的一些細節,想起來再說。想體驗更多細節,可以試一下 liuchengxu/space-vim -- An elegant vim distribution inspired by spacemacs, 適合於同時使用 vim 與 spacemacs 的用戶。(FBI Warning : 這是廣告~)照著cheatsheet, 熟能生巧!圖片來源:給程序員的VIM速查卡
想要優雅的使用Vim,你需要具備一顆創造的心,當然這個前提是你需要系統地學習vim腳本語言。分享一篇翻譯的vim教程:
wsdjeg/vim-galore-zh_cn此外,如果有興趣也可以嘗試下spacevim:
SpaceVim/SpaceVim推薦一本書:practical vim
最好的文檔其實就是幫助:F1 or :help
遊戲在此:遊戲:VIM大冒險
當然,不想看E文其實有人把幫助文檔翻譯成中文了,自己google一下哈。- 有專門開發工具的場合絕不要使用 vim,例如 visual studio,android eclipse, qtcreator
- 文本對象(text object)的概念非常重要,參考 vim 手冊
- 把 esc 映射為 jj:imap jj &
& - 讓游標停留在中央,固定視覺的重點/編輯區域:autocmd! CursorMoved * normal zz
- Bundle 插件管理,插件 git repo 自動更新。別的推友已經提到,我用的是 pathogen。
- 直觀列出/選擇 buffer 的插件。我用的是自己寫的:bsdelf/bufferhint · GitHub
- 一鍵切換 paste 模式,方便從外部貼入代碼:set pastetoggle=&
- C/C++ 補全用 clang_complete,不能像編譯器那樣理解語言的補全插件不予考慮
啥?吭哧吭哧的抄或者寫上亂七八槽的vimrc,裝些不知道何年何月更新的插件能叫優雅嗎?再配上最多256色的colorscheme, 弄些語法高亮能叫優雅嗎? 看著手冊寫上只能用在vim上的vimscript寫個沒幾個人用的插件能叫優雅嗎?
真正優雅的人是打開vim, 看到歡迎頁面,然後給烏干達兒童捐上1000美金,然後嘆息一聲。合上筆記本而不是&把你小拇指翹起來打字,妥妥的優雅爆。
當年集訓隊內推使用vim,把這張圖片當了一個學期的電腦桌面,優雅是什麼鬼?get your hands dirty
直接:help或看a byte of vim
用Vim最關鍵的在於,不要當著別人的面用。趁著沒人自己在家偷偷摸摸的用Vim就行了,設置個快捷鍵,有人來了趕緊切換到IDE。你問我為啥?被無數人無數次罵 裝逼 之後總結出的教訓。
推薦本書,O"Reilly出的,《學習vi和Vim編輯器》第七版,只需要看關於vi, Ex, Vim的內容,寫的很好。我覺得vim是很優雅的,比如命令d3w(delete 3 words),動作(d)+範圍(3w)式的命令(參考 :help motion.txt)。vim就應該是這樣使用的,這是我在stackexchange/stackoverflow上看到的,看到這個我才真正的會用vim。
就像學滑雪要先學會如何摔倒,學 VIM 要首先學會如何退出。
你需要這個:spf13-vim - The Ultimate Vim Distribution還有這個:然後,動手去練吧,堅持一個月就OK了!
推薦閱讀:
※到底 VIM 能配置到多強大的程度?
※你最愛的一個 Vim 命令是什麼?
※為什麼vimrc設置inoremap <c-h> <left>無效?
※vim顯示^@是什麼意思啊?
※VIM如何永久性顯示行號?