摘要:轉換時支持模板文件,配合強大的模板文件,可以自己創建,或者是實現語法高亮,還支持數學公式編輯。標簽文件允許這些項目能夠被一個文本編輯器或其它工具簡捷迅速的定位。
原文地址
Vim作為一個強大的編輯器,再配合強大的插件,就可以稱得上為編輯神器了。
pathogenpathogen為管理插件的插件,類似的還有vundle。在 Pathogen 之前,安裝插件就是把插件文件放在.vim目錄下,所有的插件都混在一起,不便于管理。
通過pathogen,可以將不同的插件放到不同的目錄里,比如:
? ~ tree .vim/bundle -L 2 .vim/bundle ├── SingleCompile │?? ├── COPYING │?? ├── README.rst │?? ├── autoload │?? ├── doc │?? ├── mkzip.sh │?? └── plugin
這樣,各個插件之間的文件都獨立于自己的目錄。以后安裝插件時只需要將插件clone到bundle下相應的目錄即可,重新打開vim用:Helptags生成幫助文檔。刪除一個插件,只要直接刪除這個插件的目錄。
pathogen的安裝十分簡單,只需要將pathogen clone到.vim/bundle/vim-pathogen目錄,然后在配置文件加下面內容即可:
runtime bundle/vim-pathogen/autoload/pathogen.vim execute pathogen#infect()
或者可以將pathogen放在其他地方,然后在.vimrc加上如下內容:
source ~/src/vim/bundle/vim-pathogen/autoload/pathogen.vim execute pathogen#infect()nerdtree
Nerdtree用來瀏覽文件系統并打開文件或目錄。
nerdtree提供如下功能及特性:
以繼承樹的形式顯示文件和目錄
對如下類型的文件進行不同的高亮顯:文件、目錄、sym-links、快捷方式、只讀文件、可執行文件。
提供許多映射來控制樹狀結構
對樹狀結構內容的過濾(可在運行時切換),如自定義文件過濾器阻止某些文件(比如vim備份文件等)的顯示、可選是否顯示隱藏文件、可選不顯示文件只顯示目錄
可以自定義Nerd窗口的位置和大小,自定義結點排序方式
可以將文件和目錄添加到收藏夾,可以用書簽標記某些文件或者目錄
具體見下圖:
可以在NERDTree欄用?呼出快速幫助文檔,或者用:h NERDTree查看詳細文檔。
xptemplate編碼中難免會有許多重復的代碼片段,每次鍵入這些片段明顯是不明智的做法,于是就有大牛寫了snipMate插件,不過還有一個更加強大的插件:xptemplate。
安裝完成后:Helptags生成幫助文檔,然后:h xpt查看幫助文檔。
要想看當前文件類型支持的代碼片段,可以在insert模式下鍵入
如下圖所示:
如果輸入不完整的代碼片段名字,鍵入
switch ( var ) { case constant : /* cursor */ break; }
然后兩次
switch ( var ) { case constant : if ( condition ) { /* cursor */ } break; }
xpt的補全配置文件類似ftplugin/javascript/javascript.xpt.vim。另外也可以添加自己的代碼片段,可以新建ftplugin/_common/personal.xpt.vim文件,寫入自己的配置,personal.xpt.vim優先級最高,可以保證自己的配置不被覆蓋。
YouCompleteMeValloric覺得Vim下的補全插件跟IDE比差太遠,補全時間慢,按鍵繁瑣,所以他自己寫了一個,他要求補全時間在10ms之內必須出現。于是就有了YouCompleteMe(以下簡稱YCM)。
YCM是一個比較新Vim代碼補全插件,默認為程序語言提供基于標識符的補全。它會收集當前文件、tags文件以及其他訪問過的文件中的標識符,當輸入時,會自動顯示匹配的標識符。YCM不需要TAB即可呼出匹配的標識符,可以一邊輸入一邊參考YCM呼出的菜單。YCM的強大之處還在于,它的匹配并不是前綴匹配,而是子字符串匹配,也就是說如果輸入abc,那么標識符中的xaybgc也會匹配,而不只是abc...。
另外YCM也可以基于clang為C/C++代碼提供語義補全。 對C/C++來說youcompleteme現在應該是最好的選擇,借助clang的強大功能,補全效率和準確性極高。
YCM使用Jedi來加強python的語義補全,只需要git submodule update --init --recursive。另外YCM也支持其他許多語言,比如ruby、java等。
具體使用可以看下圖:
YCM需要vim版本至少是7.3.584,可以用:version查看vim版本號,如下:
:version VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Apr 19 2013 01:00:32) MacOS X (unix) version Included patches: 1-806
另外需要支持python,:echo has("python")的結果是1.
YCM的安裝相對復雜一點,首先用下載插件,用pathogen(或者vundle)進行相應的安裝,然后下載clang,放在ycm_temp/llvm_root_dir下:
$ mkdir -p ~/ycm_temp/llvm_root_dir $ mv ~/Download/clang+llvm/* ~/ycm_temp/llvm_root_dir $ cd ycm_temp/llvm_root_dir $ llvm_root_dir ls bin docs include lib share
安裝cmake和python-dev,然后編譯如下:
$ cd ~ $ mkdir ycm_build $ cd ycm_build $ cmake -G "Unix Makefiles" -DPATH_TO_LLVM_ROOT=~/ycm_temp/llvm_root_dir . ~/.vim/bundle/YouCompleteMe/cpp $ ycm_core
詳細安裝說明在項目主頁有說明,可以參考。
pydictionpydiction是一款強大的python自動補全插件,可以實現下面python代碼的自動補全:
簡單python關鍵詞補全
python 函數補全帶括號
python 模塊補全
python 模塊內函數,變量補全
該插件需要filetype plugin on配置。 輸入時TAB即可彈出補全提示,不過需要一個字典文件,比如complete-dict,然后在配置文件中將字典文件路徑添加到pydiction_location變量中:
let g:pydiction_location = "~/.vim/bundle/pydiction/complete-dict"
輸入時: raw
raw_input( raw_unicode_escape_decode( raw_unicode_escape_encode(
要想將某個模塊加入字典文件,可以用下面命令:
$ python pydiction.py... [-v]
-v選項將結果輸出到標準輸出而不是complete-dict文件,比如要添加requests、BeautifualSoup
python pydiction.py requests bs4
生成的字典部分如下:
--- import requests --- requests.HTTPError( requests.PreparedRequest( requests.Request(syntastic
syantastic是一款強大的語法檢查插件,支持很多語言的語法與編碼風格檢查,每次保存文件都會引起這個插件的查錯操作。實際上這個插件只是個接口,背后的語法檢查是交給各個語言自己的檢查器,例如JavaScript使用jshint,python使用flake8等。
可以在syntax_checkers/language文件中查看syntastic需要的外界語法檢查器
? ~ ls .vim/bundle/syntastic/syntax_checkers c docbk java objcpp scala xhtml css go lua python text zsh cuda haskell nasm ruby typescript ? ~ ls .vim/bundle/syntastic/syntax_checkers/python flake8.vim pep8.vim py3kwarn.vim pyflakes.vim pylint.vim python.vim
外界的語法檢測器必須在$PATH中,也可以使用軟鏈接。
syntastic特性:
錯誤信息被載入location-list,需要:Error命令
當光標處于有錯誤的行時,在命令窗口顯示錯誤信息
在有錯誤或警告的行顯示 signs
可以在狀態欄顯示錯誤信息
當鼠標放置于有錯誤的行時,在氣泡中顯示錯誤信息
用語法高亮顯示具體出錯部分。
如圖所示:
vimwiki維基語法的作用有三點:
使條目更規范,通過一定轉換,wiki 能輸出為擁有約定俗成格式的HTML;
節約編輯時間,不用寫出完整的HTML標簽,也不用在可視化編輯器中點來點去;
充分的可讀性,使用維基語法書寫的文檔,即使未被轉為HTML,內容的語義也是一目了然,甚至表格也能清晰地閱讀。
VimWiki官方稱之a personal wiki for Vim,一個基于Vim的Wiki 系統,是一個非常不錯的用于個人知識管理的利器,并且還支持輸出到網頁。
在Vim的Normal模式下,鍵入ww三個鍵,Vim就會打開wiki首頁(index.wiki)。輸入模式,在單詞上面Enter既可以把此單詞變為wiki詞條,然后在Normal模式Enter wiki詞條,既可以進入相應的詞條頁面進行編輯。
編輯完詞條之后進行保存,然后wh(:Vimwiki2HTML)將當前wiki頁轉換成Html格式,whh轉換為html格式然后打開頁面。vimwiki轉換html時支持模板文件,配合強大的模板文件,可以自己創建css,或者是實現語法高亮,vimwiki還支持MathJax數學公式編輯。
在vimwiki中使用以下占位符,能對生成的HTML文件做一些特殊的處理。
%toc 自動生成的目錄
%title 指定HTML文檔的title,建議放到文檔最末尾。如果不指定,title 就是文件名
%nohtml 告訴 vimwiki 不為某條目生成HTML文件。即使你在該條目打開時為它多帶帶執行 :Vimwiki2HTML ,也不會生成。
vimwiki 有一個g:vimwiki_valid_html_tags值,可以指定允許寫在 wiki 中的HTML標簽。
Vimwiki的優點:
與Vim緊密結合,可使用Vim的內建的正則表達式規則,高效處理文本
與Vim緊密結合,可利用Vim內建的多種命令,以及可顯示多個分頁的特性,同時展示多種窗口,快速查看多份資料.
由于Vim是文本處理工具,所以任何筆記,只要存為文本數據,便可以用Vim來組織和整理
內置了特別的語法高亮模式,在觀感上與普通見到的wiki沒有多大的分別.
但是vimwiki的語法是自創的,和廣泛使用的輕量級標記語言markdown等不兼容,因此可移植性比較差。
ZenCodingvim 插件zencoding-vim支持類似Zen Coding的縮寫。Zen Coding是一個高效編寫HTML, XML, XSL的編輯器插件,支持許多編輯器。
如下內容:
test1 test2 test3
V 進入 Vim 可視模式,“行選取”上面三行內容,然后按鍵
zencoding 支持的簡寫規則,類似于CSS選擇器(大寫的E代表一個HTML標簽):
E 代表HTML標簽。
E#id 代表id屬性。
E.class 代表class屬性。
E[attr=foo] 代表某一個特定屬性。
E{foo} 代表標簽包含的內容是foo。
E>N 代表N是E的子元素。
E+N 代表N是E的同級元素。
E^N 代表N是E的上級元素。
還提供了連寫(E*N)和自動編號(E$*N)功能。div[src=span$]#item$.class$$*3展開后為:
另外還有許多強大的功能,如下:
查看幫助文檔: help zencoding
Tagbar首先來了解下ctags,ctags為文件中的各種語言對象生成一個索引文件(或稱為標簽文件,tags)。標簽文件允許這些項目能夠被一個文本編輯器或其它工具簡捷迅速的定位。一個“標簽”是指一個語言對象,它對應著一個有效的索引項 (這個索引項為這個對象而創建)。
ctags 能夠為多種程序語言文件的語言對象信息生成可讀格式的交叉索引列表,并且支持用戶用正則表達式自定義語言對象。
對于C/C++,其生成的標記文件tags中包括這些對象的列表:
用#define定義的宏
枚舉型變量的值
函數的定義、原型和聲明
名字空間(namespace)
類型定義(typedefs)
變量(包括定義和聲明)
類(class)、結構(struct)、枚舉類型(enum)和聯合(union)
類、結構和聯合中成員變量或函數
要生成tags十分簡單:
c: ctags –R src
c++:ctags -R --c++-kinds=+p --fields=+iaS --extra=+q src
--c++-kinds=+p : 為C++文件增加函數原型的標簽
--fields=+iaS : 在標簽文件中加入繼承信息(i)、類成員的訪問控制信息(a)、以及函數的指紋(S)
--extra=+q : 為標簽增加類修飾符。注意,如果沒有此選項,將不能對類成員補全
-R : 遞歸生成src中所有源文件的tags文件
使用tags文件也很簡單,把光標移動到某個元素上,CTRL+]就會跳轉到對應的定義,CTRL+o可以回退到原來的地方。如果當前光標下是個局部變量,gd跳到這個局部變量的定義處。
tags必須在vim運行的當前目錄,才能在vim里面正確跳轉,不過也可以使用set tags="/path/tags"即可。
而vim下的TagBar插件(Taglist的升級版)則是為了方便瀏覽源文件的標簽,TagBar提供了一個側邊欄列出了當前文件所有的標簽。如下圖:
注意:mac自帶的ctags程序不是exuberant ctags, 所以使用時會出現問題,可以用homebrew重新安裝ctags,然后做一個軟鏈接即可,具體如下:
$ brew install ctags $ cd /usr/local/Cellar/ctags/5.8/bin $ ./ctags --version Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert Compiled: Jun 14 2013, 11:41:43 Addresses:其他插件, http://ctags.sourceforge.net Optional compiled features: +wildcards, +regex $ cd /usr/bin $ sudo ln -s /usr/local/Cellar/ctags/5.8/bin/ctags ./ctags
vim-javascript
vim 自帶的 javascript 縮進簡直沒法使用,同時還有 html 里的 javascript 縮進也是一塌糊涂。而強大的插件vim-javascript則解決了上面的問題。
pydoc
pydoc將python幫助文檔集成到vim中,可以方便地一邊寫程序一邊瀏覽幫助文檔,如下圖:
vim-flake8
vim的默認配置對python的支持有限,要在編寫代碼時及時得到變量拼寫錯誤等提示,可安裝Pyflakes。 Python 社區著名的PEP 8,是官方的python代碼規范,如果想編寫嚴格遵循PEP 8的代碼,可使用pep8。為了方便,有人將兩個插件整合到一起,打造出flake8,該工具可通過插件vim-flake8與vim整合。
pep8、flake8的安裝很簡單:
$ sudo pip install pep8 $ sudo pip install pyflakes $ sudo pip install flake8
不過由于syntastic的存在,沒有多大必要使用vim-flake8了。
SingleCompile
有時候想編譯運行一個簡單的源文件,這種情況退出vim在編譯運行無疑顯得麻煩,而SingleCompile很好地解決了這個問題。SingleCompile有以下特點:
編譯運行源文件時用到了vim的quickfix feature和compiler feature;
自動選擇使用編譯器或者解釋器;
支持多種語言;
可以自定義編譯/解釋的模板;
可以設置以下鍵映射:
nmap:SCCompile nmap :SCCompileRun
TagHighlight
給類/結構體/枚舉等數據類型添加語法高亮顯示, 使 vim 在顯示效果上可與 Visual Studio 相媲美。 成功安裝該插件后, 打開項目文件, 執行如下命令即可顯示高亮效果: :UpdateTypesFile。
TagHighlight支持許多種語言:C、C++、Java等。
Powerline
Powerline插件美化vim狀態欄的顯示。我的配置如下:
set laststatus=2 " Always show the statusline set t_Co=256 " Explicitly tell Vim that the terminal support 256 colors let g:Powerline_symbols = "unicode"
效果圖如下:
禁用插件可以列出當前加載的所有插件:
:scriptnames //list all plugins
啟動vim時可以禁用所有插件:
--noplugin Skip loading plugins. Implied by -u NONE.
也可以禁用指定的某些插件。如果是使用pathogen管理插件,則有兩種方法:
修改.vim/bundle中插件目錄名字,比如要禁用插件syntastic,可以通過下面命令:
? ~ mv .vim/bundle/syntastic .vim/bundle/syntastic~
使用g:pathogen_disabled變量,可以將插件名添加到該變量:
" To disable a plugin, add it"s bundle name to the following list let g:pathogen_disabled = ["syntastic"] if v:version < "703584" call add(g:pathogen_disabled, "YouCompleteMe") endif execute pathogen#infect()
上面命令將禁用syntastic插件,并且當vim版本號低于7.3.584時,禁用YouCompleteMe插件。
參考:
使用 Pathogen + Git 管理 Vim 插件
ZenCoding.vim 教程
HTML代碼簡寫法:Emmet和Haml
xptemplate:比snipmate更強的代碼片段補全
vim中的殺手級插件: YouCompleteMe
Pkm工具:Vimwiki
用 vimwiki 搭建你自己的維基世界
How do I list loaded plugins in Vim?
Temporarily disable some plugins using pathogen in vim
在Vim中使用ctags
Exuberant Ctags中文手冊
Mac終端Vim如何安裝使用ctags
TagHighlight
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/24777.html
摘要:如何優雅的使用二插件介紹插件使用管理。文件管理器樹形結構的文件管理器,目前使用。不同層次的括號顏色不一樣,如下圖另見然而這些彩虹括號插件,都免不了與沖突會使語法高亮失效,只好放棄了。 如何優雅的使用 Vim(二):插件介紹 插件使用 vim-plug 管理。很長一段時間,我都在用 Vundle,切換到 vim-plug 并非完全必要。 插件定義開始 call plug#begin(~...
摘要:概述之所以廣受青睞好評如潮,它豐富多樣的插件起到了舉足輕重的貢獻。那么如何獲取和安裝插件呢通常我們可以在官網或上獲取插件,然后可以手動安裝或利用等插件管理器來安裝。如果你想避免可以使用下面的插件管理器來安裝插件。 概述 vim之所以廣受青睞好評如潮,它豐富多樣的插件起到了舉足輕重的貢獻。那么如何獲取和安裝插件呢? 通常我們可以在vim官網或github上獲取插件,然后可以手動安裝或利用...
摘要:引言無疑是世界上最好用的編輯器之一為了不引起戰爭。本文將介紹一種推薦的代碼補全工具,并且一步步介紹它的安裝方式。是一個比較完備,并且正在日漸完備的代碼補全插件。下面將介紹的安裝及基本配置。 引言 Vim 無疑是世界上最好用的編輯器之一(為了不引起戰爭 →_→)。在廣大程序員用 Vim 敲代碼的過程中,代碼補全功能能夠大大提高生產力,尤其是對于從各種 IDE 轉到 Vim 的程序員來說...
閱讀 1179·2021-10-20 13:48
閱讀 2215·2021-09-30 09:47
閱讀 3115·2021-09-28 09:36
閱讀 2356·2019-08-30 15:56
閱讀 1211·2019-08-30 15:52
閱讀 2028·2019-08-30 10:48
閱讀 619·2019-08-29 15:04
閱讀 581·2019-08-29 12:54