国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何優(yōu)雅的使用 Vim(二):插件介紹

yeooo / 1545人閱讀

摘要:如何優(yōu)雅的使用二插件介紹插件使用管理。文件管理器樹形結(jié)構(gòu)的文件管理器,目前使用。不同層次的括號(hào)顏色不一樣,如下圖另見(jiàn)然而這些彩虹括號(hào)插件,都免不了與沖突會(huì)使語(yǔ)法高亮失效,只好放棄了。

如何優(yōu)雅的使用 Vim(二):插件介紹

插件使用 vim-plug 管理。很長(zhǎng)一段時(shí)間,我都在用 Vundle,切換到 vim-plug 并非完全必要。

" 插件定義開(kāi)始
call plug#begin("~/.vim/plugged")

" 在此添加插件...

" 插件到此結(jié)束
call plug#end()

不得不承認(rèn),vim-plug 用起來(lái)確實(shí)比 Vundle 簡(jiǎn)單。

下面來(lái)看看有哪些插件。

配色方案

作為一個(gè)編輯器,顏值比什么都重要,Vim 也不例外。
Vim 自帶的配色方案(Color Scheme),我用得最多的就是 desertron。
最近,發(fā)掘了下面幾個(gè):

Plug "morhetz/gruvbox"
Plug "ayu-theme/ayu-vim"
Plug "drewtempelmeyer/palenight.vim" " 基于 Onedark,效果差不多
Plug "joshdick/onedark.vim" " Atom Onedark 的復(fù)刻

目前用的是 gruvbox,算是比較完善的一個(gè)配色,和狀態(tài)欄插件 airline 整合得也不錯(cuò)。

狀態(tài)欄

狀態(tài)欄是一個(gè)大有作為的地方。
airline 是大名鼎鼎的 powerline 的輕量版,我沒(méi)用過(guò) powerline,從介紹來(lái)看,顯示效果更好,也稍為笨重,依賴于 Python。

Plug "vim-airline/vim-airline"
" 主題,因?yàn)?gruvbox 對(duì) airline 的支持不錯(cuò),暫時(shí)就不需要了。
" Plug "vim-airline/vim-airline-themes"
縮進(jìn)標(biāo)線

目前使用 indentLine 插件,顧名思義,就是給縮進(jìn)畫線,讓代碼塊更明顯。
對(duì) Python 這種以縮進(jìn)組織代碼塊的語(yǔ)言來(lái)說(shuō),猶如神助。

Plug "Yggdroot/indentLine"
let g:indentLine_noConcealCursor = 1
let g:indentLine_color_term = 0
let g:indentLine_char = "|"
代碼對(duì)齊

目前使用 tabular。

Plug "godlygeek/tabular"

假如有一段 JS:

var video = {
    metadata: {
        title: "Aligning assignments"
        h264Src: "/media/alignment.mov",
        oggSrc: "/media/alignment.ogv"
        posterSrc: "/media/alignment.png"
        duration: 320,
    }
}

選中要對(duì)齊的行,執(zhí)行 :Tab/:,結(jié)果如下:

var video = {
    metadata: {
        title     : "Aligning assignments"
        h264Src   : "/media/alignment.mov",
        oggSrc    : "/media/alignment.ogv"
        posterSrc : "/media/alignment.png"
        duration  : 320,
    }
}

此外,junegunn/vim-easy-align 似乎也是個(gè)不錯(cuò)的選擇。暫時(shí)還未嘗試。

文件管理器

樹形結(jié)構(gòu)的文件管理器,目前使用 nerdtree。
操作并不局限于瀏覽,刪除、重命名等操作也支持,雖然我很少使用。

Plug "scrooloose/nerdtree"
" F2 快速切換
nmap  :NERDTreeToggle

Vim 自帶的 netrw 也不錯(cuò),命令為 :Vex,效果如下:

體驗(yàn)跟 nerdtree 比還是有不少差距的。

代碼提綱

以前用 taglist,現(xiàn)在用 tagbar。
它們都基于 ctags,目前比較好用的 ctags 是 universal-ctags,在 Linux 上很容易編譯安裝。

不要安裝 Linux 系統(tǒng)自帶的 ctags,一般為 exuberant-ctags,最后更新于 2009 年,很久沒(méi)有維護(hù)了。
Universal-ctags 源自 exuberant-ctags,做了不少更新和改進(jìn)。

Plug "majutsushi/tagbar"
nmap  :TagbarToggle

JS 的 tagbar 擴(kuò)展:hushicai/tagbar-javascript.vim
其他還有 Markdown / CSS 等擴(kuò)展,可能需要依賴外部程序,我自己用不到,就不再贅述了。

注釋

Vim 優(yōu)秀的注釋插件不止一個(gè),目前在用 EnhancedCommentify。
快捷鍵嘛,一般 x 就夠了。

Plug "hrp/EnhancedCommentify"
let g:EnhCommentifyRespectIndent = "Yes"
let g:EnhCommentifyPretty = "Yes"

但是也有不爽的地方,比如下面這種多行注釋無(wú)法對(duì)齊:

    // if (!ec) {
      // HttpSessionPtr session{
        // new HttpSession(std::move(socket), GetRequestHandler())
      // };
      // session->Start();
    // }

所以就在剛剛,我試了一下 tcomment,效果不錯(cuò):

    // if (!ec) {
    //   HttpSessionPtr session{
    //     new HttpSession(std::move(socket), GetRequestHandler())
    //   };
    //   session->Start();
    // }
Plug "tomtom/tcomment_vim"

然而 tcomment 的快捷鍵是硬傷,一時(shí)半會(huì)很難適應(yīng)。

彩虹括號(hào)

當(dāng)括號(hào)嵌套時(shí),很難辨識(shí)。彩虹括號(hào)就是為了解決這個(gè)問(wèn)題。
不同層次的括號(hào)顏色不一樣,如下圖:

" Parentheses enhancements.
Plug "kien/rainbow_parentheses.vim"
let g:rbpt_colorpairs = [
     ["brown", "RoyalBlue3"],
     ["Darkblue", "SeaGreen3"],
     ["darkgray", "DarkOrchid3"],
     ["darkgreen", "firebrick3"],
     ["darkcyan", "RoyalBlue3"],
     ["darkred", "SeaGreen3"],
     ["darkmagenta", "DarkOrchid3"],
     ["brown", "firebrick3"],
     ["gray", "RoyalBlue3"],
     ["black", "SeaGreen3"],
     ["darkmagenta", "DarkOrchid3"],
     ["Darkblue", "firebrick3"],
     ["darkgreen", "RoyalBlue3"],
     ["darkcyan", "SeaGreen3"],
     ["darkred", "DarkOrchid3"],
     ["red", "firebrick3"],
     ]
let g:rbpt_max = 8
let g:rbpt_loadcmd_toggle = 0
au VimEnter * RainbowParenthesesToggle
au Syntax * RainbowParenthesesLoadRound
au Syntax * RainbowParenthesesLoadSquare
au Syntax * RainbowParenthesesLoadBraces
au Syntax * RainbowParenthesesLoadChevrons

另見(jiàn):luochen1990/rainbow

然而這些彩虹括號(hào)插件,都免不了與 CMake 沖突——會(huì)使 CMake 語(yǔ)法高亮失效,只好放棄了。

語(yǔ)法高亮

不得不說(shuō),基于關(guān)鍵字和模式匹配的語(yǔ)法高亮已經(jīng)落后于時(shí)代了。

Vim 的語(yǔ)法高亮,有這樣幾種方式:

基于關(guān)鍵字和模式匹配,效率高,但是對(duì)語(yǔ)義了解甚少。

基于 libclang 這種現(xiàn)代編譯器提供的豐富語(yǔ)義,效率差,往往難以讓人接受。

基于 ctags 索引出的符號(hào),效率介于以上兩者之間,配置較麻煩。

分別舉幾個(gè)例子。

基于關(guān)鍵字和模式:

Plug "justinmk/vim-syntax-extra"
Plug "octol/vim-cpp-enhanced-highlight"

基于 libclang:

Plug "jeaye/color_coded"

基于 ctags:

Plug "vim-scripts/TagHighlight"

Plug "xolox/vim-misc"
Plug "xolox/vim-easytags"

分別看一下效果。

vim-cpp-enhanced-highlight:

TagHighlight:

color_coded:

目前,我比較傾向于第一種,簡(jiǎn)單高效,效果雖然不怎么完美,但是可以接受。
當(dāng)然,vim-cpp-enhanced-highlight 只針對(duì) C/C++,其他語(yǔ)言就不行了。

Python 高亮增強(qiáng)
Plug "hdima/python-syntax"
let python_highlight_all = 1
簡(jiǎn)單補(bǔ)全

幾個(gè)簡(jiǎn)單補(bǔ)全插件,不需要安裝外部程序。

補(bǔ)全括號(hào)

輸入左括號(hào)時(shí),自動(dòng)補(bǔ)全右括號(hào)。

Plug "Raimondi/delimitMate"
" For Python docstring.
au FileType python let b:delimitMate_nesting_quotes = ["""]
補(bǔ)全 HTML/XML 標(biāo)簽
Plug "docunext/closetag.vim"
let g:closetag_html_style=1
代碼檢測(cè)(Lint)

首推 ALE (Async Lint Engine)。
Syntastic 也不錯(cuò),但是 Vim 8 之后,因?yàn)楫惒浇涌诘囊耄珹LE 逐漸占了上風(fēng)。

Plug "w0rp/ale"

ALE 的特點(diǎn)是異步調(diào)用,不影響主界面。
ALE 跟其他插件比如 airline 整合得比較好。
ALE 依賴于大量的外部工具(cpplint, eslint, etc.),這些工具才是幕后的功臣。

ALE 作用于 C++ 代碼的效果:

結(jié)語(yǔ)

這里列舉的插件,只是冰山一角。
諸如 YCM 這種級(jí)別的插件,其代碼補(bǔ)全的水平幾乎可以與重量級(jí) IDE 相匹敵了。
但是,編輯器畢竟只是編輯器,用 Vim 做它最擅長(zhǎng)的事就可以了,硬是要跟什么什么做比較,沒(méi)必要。

有時(shí)候我不禁自問(wèn):到底是插件幫我節(jié)省的時(shí)間多,還是我尋找、配置插件的時(shí)間多?
也許我并不在乎答案。

<全文完>

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/25002.html

相關(guān)文章

  • 如何優(yōu)雅使用 Vim(一):基本配置

    摘要:如何優(yōu)雅的使用一基本配置十年,青春不再轉(zhuǎn)眼間,已用了十年。對(duì)程序員來(lái)說(shuō),用制表符還是用空格,足以引發(fā)一場(chǎng)戰(zhàn)爭(zhēng)。 如何優(yōu)雅的使用 Vim(一):基本配置 Vim 十年,青春不再 轉(zhuǎn)眼間,Vim 已用了十年。從一開(kāi)始的抵觸、不解,到隨之而來(lái)的習(xí)慣、喜歡,再到近幾年編輯器層出不窮的盛況下對(duì) Sublime Text 等短暫的嘗試,以及最后即現(xiàn)在的回歸,這是一個(gè)復(fù)雜的過(guò)程。目前,我對(duì) Vim ...

    張巨偉 評(píng)論0 收藏0
  • 打造高效個(gè)性Terminal()之 zsh

    摘要:歡迎來(lái)我的博客閱讀打造高效個(gè)性一之打造高效個(gè)性二之如果說(shuō)塑造了一個(gè)婀娜多姿顏值高的貌美姑娘,那么就是給她塑造了一個(gè)柔情俠骨百事通的女漢子之心。一款增加了一些在上實(shí)用的命令插件。 歡迎來(lái)我的博客閱讀:「打造高效個(gè)性Terminal(一)之 iTerm」「打造高效個(gè)性Terminal(二)之 zsh」 oh-my-zsh 如果說(shuō)iTerm塑造了一個(gè)婀娜多姿顏值高的貌美姑娘,那么zsh就是給...

    ?xiaoxiao, 評(píng)論0 收藏0
  • PHP下如何優(yōu)雅使用Docker來(lái)構(gòu)建環(huán)境()

    摘要:指令這條命令是指明最后容器需要暴露哪些端口號(hào),這樣其他系統(tǒng)才能使用這個(gè)端口。但是靈活性不高,后面我在編排的時(shí)候會(huì)教大家用編排來(lái)統(tǒng)一開(kāi)發(fā)環(huán)境。更多還有更多指令大家看下官方文檔,我自己覺(jué)得上面的指令算是使用比較多的了。 前言 上一篇文章呢,我們簡(jiǎn)單的了解了Docker的基本命令,這篇文章呢,我們來(lái)了解下Dockerfile這個(gè)文件。 一個(gè)神奇的文件:Dockerfile 我不知道有多少同學(xué)...

    longshengwang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<