vim外掛的安裝方式 -- vim註釋外掛和doxygen函式註釋生成外掛-ctrlp外掛-tabular等號對齊 外掛...

weixin_34162629發表於2017-06-25

使用unzip的時候 指定 -d選項, 是說明解壓到的 目標地址. 這個引數還是比較方便的, 比直接unzip到當前目錄, 然後在去拷貝到目標目錄, 然後再刪除當前目錄中的解壓資料夾, 方便多了.

使用:x命令, 方便直接; 因為它就類似於(注意不是等於same):wq, 而且, "只有當發生改變時才寫入": "only when changes have been made".
like和same as. like是類似, 而same是等同於, 所以這裡的:x是用的 like 而不是same.
821299-20170625075014320-1835845384.png

用unzip解壓時, 是 從 archive inflating 到目標資料夾, 解壓是膨脹, zip才是deflating.

vim在跳轉到行首時, 不能使用 s-i 來實現, 因為這樣的話, 就不能輸入大寫的I 了. 同樣的道理, 其他對映都不能使用 s-字母了.

vim的幫助還是很有用的. 使用幫助時, 鍵入: :help :x(等命令) , 要查詢的內容可以是整個命令, 包括 (冒號), 那麼首先要建立幫助: 使用命令: :helptags 外掛所在的doc目錄 如: :helptags ~/.vim/doc 當然是在vim中來執行的. 這時候, 會在doc目錄中生成一個tag 檔案. 這個檔案就是vim幫助命令 所要搜尋的檔案....

vim中set hidden的含義?

tmux? 是linux的終端複合器

在 CentOS 和 RHEL 中,它不存在於官方的軟體源中,所以需要新增 EPEL 庫。新增命令:    [root@server ~]# rpm -ivh http://dl.Fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm   新增完畢後,可以用下面的命令來安裝它:     [root@server ~]# yum install tmux       安裝完畢後,只需要執行如下命令就可以使用它了:      [root@server ~]# tmux
執行這個命令後,您將會被轉移到 Tmux 的會話中。轉移到會話中後,您需要先按下 Ctrl+B ((ctrl -b 叫做 命令字首~ )才能執行其他的命令。您可以先按下 Ctrl+B 後按 "?" 來檢視所有支援的命令。

vim中的快捷方式的設定? 以前總是習慣於 跟其他控制鍵, 如cttrl, shift, alt等等結合新增在一起使用, 現在看來, 儘量對於自己定義的對映鍵, 儘量不要使用 其他控制鍵, 儘量使用 普通的 "雙字母/三字母"按鍵 來對映, 比如: jk, jj, kk, hh ll 等就是很好的例子. 所以這樣看來 , vim的自定義鍵對映就是無窮無盡的了. 而且, 控制鍵ctrl,shift,alt等通常是一些 官方的, 比較nb的外掛的 配置 會使用這些輔助控制鍵!


vim外掛的安裝方式:
step 1. 下載解壓
step2. 兩種安裝方式,

一是, 直接將 plugin.zip解壓到 ~/.vim目錄中就好. 這時候, 解壓出來會自帶目錄 doc/NERD_commenter.txt, plugin/NERD_commenter.vim, 然後就可以使用了
二是, 不解壓到 ~/.vim目錄中 , 而是放到 vimfiles中, 比如: /usr/share/vim/vimfiles/ 中對應的doc, plugin目錄中.

step3. 但是這個時候, 還不能使用, 還要在vimrc中對 外掛 進行相關的 配置
比如:

let NERDSpaceDelims=1           " 讓註釋符與語句之間留一個空格
let NERDCompactSexyComs=1       " 多行註釋時樣子更好看
let g:NERDDefaultAlign = ‘left‘  "將行註釋符左對齊

--------

最常用的操作命令:
,cc 單行註釋   註釋方式//
,cm 對選中的範圍多行註釋  註釋方式為 /* ... */
,cs 以”性感”的方式註釋

,cu 取消註釋
,ca 切換// 與/**/註釋方式   這個只是切換, 並不註釋

DoxgenToolkit 的使用, 下載地址: http://www.vim.org/scripts/script.php?script_id=987 但是, 如果用vundle安裝的話, 直接就是: Bundle 'DoxygenToolkit.vim'
參考: c/c++的註釋風格: http://guqian110.github.io/pages/2015/01/12/learning_vim_doxygentoolkit.html

map fg : Dox<cr>
let g:DoxygenToolkit_authorName="citongke1"
let g:DoxygenToolkit_licenseTag="My ownlicense\<enter>"
let g:DoxygenToolkit_undocTag="DOXIGEN_SKIP_BLOCK"
let g:DoxygenToolkit_briefTag_pre = "@brief\t"
let g:DoxygenToolkit_paramTag_pre = "@param\t"
let g:DoxygenToolkit_returnTag = "@return\t"
let g:DoxygenToolkit_briefTag_funcName = "yes 或者no"    // 這個是指, 是否在註釋中 自動 包含函式名稱

let g:DoxygenToolkit_maxFunctionProtoLines = 30
====================

使用 DoxygenToolkit的限制條件:

對函式生成註釋的限制:
1. 假設函式名(後面的左括號)至少在當前游標位置後的第三行;(即: 當前游標行和函式定義行中間最多隔 2個空行, 否則就不能生成函式註釋 ,此時 函式前用:Dox, 則不會生成註釋,tip:  nothing to document here)... 注意, 生成函式註釋時, 會自動將註釋和函式名稱之間的 空行 給刪除掉! 
2. 在註釋塊在寫入之前不能再次更新;
3. 塊分隔符(頭部和尾部)只包含函式註釋(就是隻有函式註釋才生成塊header和 block footer, 其他像 license, author則沒有塊頭部和腳部註釋);    
4. 假設已經使用了縮排;
5. 函式引數中得到註釋還不支援;(像void foo(int bar /* ... */))
6. 定製輸出指令碼,在指令碼檔案中,在.vimrc中設定g: DoxygenToolkit_*變數:

Doxgen的主要命令, 就是有三個: 一個是全文的 license, 使用命令: DoxLic, 二個 是全文的author作者資訊. 使用命令: DoxAuthor, 三個 是單個單個的 函式 的註釋 直接就是 :Dox

關於 vim配置檔案的更新 生效問題?

  1. 配置檔案本身 vimrc, 一旦修改儲存後就生效.
  2. 這個問題的關鍵是 指, 當一個普通檔案用vim開啟後, 這時候, 會首先processing /etc/vimrc處理 載入配置檔案, 後才開啟本檔案, 所以 開啟一個普通檔案後, 再去修改vimrc這時被修改 的配置是不會生效的, 要 重新啟動 這個普通檔案後, 讓修改後的配置檔案重新載入後, 才能使新的配置生效.
  3. 所以說, 在修改配置的時候, 觀察配置的效果時, 需要重啟的是, 普通檔案, 而 配置檔案 只管修改它 儲存就是了. 不必關閉..

關於在各個模式下都能生效的 鍵對映

  1. 好像map只能在noral下生效(不是傳說中 的所有模式下..), 而imap只能在插入模式下生效. 兩者不能呼喚.
  2. 同樣的鍵對映在不同的模式下, 所起的作用是不同的. 特別是對於 冒號命令. 冒號命令應該是 只能在 normal下生效 "執行命令", 如果是在insert模式下, 它將不會執行命令, 而只是機械的按 原樣的 替換成 對映的 按鍵. 如: imap cm :Dox<CR> 在插入模式下, 按cm將只會在 文件中, 插入 'literal'的 :Dox<cr> , 只是這樣的文字, 但是不會作為 冒號命令來執行.
  3. 所以, 在插入模式下, 要將鍵對映為可以執行的命令, 應該 先用esc退回到 normal模式下, 然後再執行 冒號命令, 即: imap cm <esc>:Dox<CR> 在冒號前面有 esc
  4. 要使doxygen在插入和normal模式下, 都能夠起作用, 就應該 配置 兩條這樣的命令:
 imap cm   <esc>:Dox<CR>
 map cm   :Dox<CR>

vim下的模糊搜尋外掛ctrlp.vim? 注意這裡的名字就是 ctrlp, 不是一個組合鍵.

  1. 是使用頻率最高的外掛之一, 作用: 模糊搜尋, 可以搜尋的物件是: 普通檔案 / buffer / mru / tag 等等, github: 原始的是 kien/ctrlp, 也可使用的國人改進版本 ctrlpvim/ctrlp.vim
  2. 下載地址: 在github上的: https://github.com/ctrlpvim/ctrlp.vim 和bundle條目 : Bundle 'ctrlpvim/ctrlp.vim'
  3. 將下載下來的zip解壓後, 放入相應的位置即可. 比如, 這裡 將 解壓後的 autoload/ , doc/, plugin/ 目錄放入到 ~/.vim/ 目錄中.
  4. 相應的配置:
    最基本的用法:
    821299-20170626154211321-1347640580.png
    通常有三種搜尋模式, 即三種搜尋地方: 搜尋普通檔案和目錄: CtrlP (Files finder mode); 搜尋buffers: CtrlPBuffer; 搜尋最近使用的文件: CtrlPMRU;
    在 files, buffers, MRU中 混合搜尋: CtrlPMixed : to search in Files, Buffers, MRU files at the same time

purge: 清除, 清洗, purge the cache of the current file : 清除當前檔案的快取...

梗概ctrlp的搜尋目錄和路徑: 開啟GVIM之後,首先"cd 【path】",然後再在此路徑中使用CtrlP,就可以一直保持路徑為當前路徑了。

md的 反引號 匹配, 總是 "貪婪匹配", 當有三個反引號的時候, 中間的那一個反引號被忽略, 貪婪匹配到最後一個 反引號!

不讓vim生成備份檔案?
set nobackup
set noswapfile
要使用這兩條 命令才行!

ctrlp為什麼不搜尋?

821299-20170628175256758-1297768752.png

記住, 所謂的 ctrl-x, ctrl-v, ctrl-t 是指 ctrlp搜尋後, 在搜尋結果中開啟的方式....

使用vim-multiple-cursor 可以實現一處輸入, 多處修改的 功能

Plugin 'terryma/vim-multiple-cursors'
let g:multi_cursor_use_default_mapping=0
let g:multi_cursor_next_key='<C-n>'
let g:multi_cursor_prev_key='<C-b>'
let g:multi_cursor_skip_key='<C-x>'
let g:multi_cursor_quit_key='<Esc>'

用法是: 先按v, 配合其他w, b等選擇內容, 然後按ctrl-n, ctrl-b, ctrl-x, 進行多處選中, 然後使用vim的命令進行編輯, 完成後, 按esc退出.
821299-20170626174332555-1407452675.png

但是, 要注意, multiple-cursor的操作, 並不是vim中的所有命令, 比如 "r" 命令, 會報錯說: key "r" cannot be replayed at 4 cursor locations. replay(重播, 重放, 重複出現的事物)
好像, 一定要經過插入模式 , 也就是 可以有兩種操作方法, 一種是 先d, 然後i, 另一種是s. 要能出現: -- ( insert ) --

ctrlp是搜尋; 輸入想要開啟的檔名,或者檔名的一部分,或者路徑 但是不能搜尋 "檔案中的內容字串???"

難道, ctrlp必須使用 .git目錄???

好像是的! ctrlp的中文參考: http://blog.codepiano.com/pages/ctrlp-cn.light.html


vim外掛指令碼的位置?

  1. vim.org是主要 關注/ 關於vim這個程式軟體 本身的站點, 雖然裡面也有 vim scripts外掛指令碼, 但是不是很全很好.
  2. vim的外掛的指令碼 站點, 主要還是: bronson(布朗森) 建立的 vim-scripts.org , 這個裡面的外掛很多很全很豐富. vundle,bundle, plugin 預設的安裝外掛的地方就是這個 vim-scripts.org, 所以vundle中凡是vim-scripts.org中的外掛都直接寫外掛名稱就好了.
  3. 而vim-scripts.org實際上是建立在 github page中 的. 所以vim-scripts和github有非常密切的關聯. github上的非vim-scripts的外掛, 要使用 Plugin "author/plugin-script-name"
  4. 而其他非github - vimscript 的外掛, 則寫 git的完整地址

vim搜尋 任意文字? 參考: http://ikuduku.com/blog/find-text-in-project-within-vim

easygrep?

安裝vim wiki: 好像本身不是用來搜尋的, 而是用來寫 個人 wiki的. pedion[pedi2n], 晶體, 細小的東西, 它的複數是: pedia. [pedi2]. 表示很多的細小的東西, 即 "百科".

vim 安裝 tabular. 等號對齊的外掛?


關於git

  1. 初始化一個git倉庫的時候, 使用 git init /git clone. 當然是在你的工作目錄下進行初始化; 然後 進行新增到index: git add ... (新增後成為 tracked , 未add的叫做 untracked present); 然後是提交: git commit -m
  2. 然後是檢視倉庫, git log; git show(檢視倉庫中的各種物件); git status(檢視工作區) 在倉庫的維護中, 是通過 commit id 來區分每一次commit的.
  3. git的結構: 你所在的/進行編碼的目錄, 就是你的workspace, => index 暫存區 => 倉庫repository. 之所以這樣設計, 是為了進行一個 緩衝, 從工作區到 index再到repos, 從workspace 到 index你還可以該動, 不至於 去頻繁改動倉庫, 不至於頻繁地生成 commit id. 和各種倉庫的維護資訊, 降低成本.
  4. git 的設計思想, 其實並不複雜, 也不陌生: 就是我們常常使用的版本迭代: 必然我們在修改一篇很重要的文章時, 可能需要進行大量的增刪, 為了防止丟失, 和能夠保留之前的歷史中的內容, 以便於以後的編輯中, 還能 '引用' 到之前的內容. 這時候, 就需要建一個資料夾, 將每次修改的文章都儲存下來, 然後, 編輯一次, 就保留一次, 這樣將每一次編輯保留的文章都放在資料夾中, 這樣的話, 這個資料夾就是一個倉庫. 裡面的每一個檔案, 就是一次 commit提交. 這就是 git的思想. git就是將每一次編輯的東西都儲存下來. ...只不過, git的附加功能要多一點, 但是這些所謂的附加功能其實也是linux本身就有的命令, 比如 倉庫中的同一個檔案在多個人提交時發生衝突時的 比較diff和合並merge. 然後git可能要多一些瀏覽和統計的功能, 如git log, show, git status等命令就是這樣的.


over- 字首, 表示 "完了的, game is over, 大於的, 翻越的, 過多的, 過度的.." 通常具有否定和不好的意味.
如: overrule: 否決, 否定, 駁回 . 用rule權力表示完了, 就是否決的意思
put: 放, 放置, 安裝... when a number is put before this command this is used as the maximum number of match to find (when for while等前置從句不一定在主句之間加逗號)

quickfix

  • quickfix: 快修, 快速恢復, 原本是c/vim 編譯器中的一個編譯選項. 目的是 : Quickfix模式的主要思想是儲存一個位置列表,然後提供一系列命令,實現在這個位置列表中跳轉。 位置列表的產生可以從編譯器的編譯輸出資訊中獲得,也可以由grep命令的輸出資訊中獲得,
  • quickfix主要是在vim中, 在編譯連結 c/c++程式時, 提高修正bug的效率, 將編譯後的錯誤 重定向到一個 臨時檔案中, 然後你可以使用命令 在這些錯誤 的條目間 進行跳轉....跟quickfix命令同時使用的命令主要有: make, makeprg, 即: 在vim中, 先設定編譯選項: set makeprg=gcc -Wall -ohello hello.c 將hello.c檔案編譯成hello目標檔案, -Wall= warning all開啟所有的警告資訊. 由於vim的選項命令中 不允許使用空格, 所以要轉義. 然後使用命令將編譯錯誤的臨時檔案中的條目 提取出來進行修改, 包括 :cc, :cw :cn, :cp, :cl (作為一個比較完整的,全面的列表顯示出來.) 等等, 其中 cw就是開啟quickfix 快速修正視窗, 以便於檢視和快速定位錯誤位置...

vimgrep lvimgrep在目錄中查詢字串? 參考: http://easwy.com/blog/archives/advanced-vim-skills-quickfix-mode/

  1. 雖然ctrlp號稱殺手級外掛, 但是, 它只能是搜尋" 檔名稱", 但是不能進入到檔案內部 去查詢 檔案的內容(檔案內容包含的字串). 而 vim使用的grep, lgrep, vimgrep, lvimgrep則可以進入到檔案內部進行內容的搜尋..., 這正是我所需要的. ctrlp只是查詢檔名. ???grep?? 的grep是正規表示式搜尋檔案內容!
  2. vim中使用grep, lgrep是藉助於外部的命令, 而vimgrep和lvimgrep本身就是vim的內部命令.
  3. grep和vimgrep(可以簡寫為vimg) 的搜尋結果是放在 quickfix list中的, 所以, 使用:cw , 或copen(c表示quickfix)開啟; 而lgrep和lvimgrp中的l表所是Location, 本地的. 表示其搜尋結果放入到location list本地列表, 結果用 :lw, 或 lopen 來開啟. w和open都是開啟的意思.
  4. grep和vimgrep等都是用正規表示式來搜尋的, 所以命令後面就要接regexp, 要搜尋 的檔案和目錄可以是多個, 而且最重要的是, 可以使用wildchar同配符, 如: vimg /\<\(DEDEINC\|dedeinc\)\>/gj **/*.php
  5. 將lvimgrep進行鍵對映: map sr :noautocmd execute "lvimgrep /" . expand("<cword>") . "/gj **/*" <Bar> lw<CR>

vim可以同時記住最新的10個錯誤列表,也就是說你最近10次使用”:make“命令編譯所遇到的錯誤都儲存著,可以使用”:colder“和”:cnewer“命令,回到舊的錯誤列表,或者到更新的錯誤列表。 colder: 不是cold , 而是 c -older 和 c-newer.

對映快捷鍵   tip: 使用cword取當前檔案游標所在出的文字,.vimrc配置如下:
map <F3> :execute "lvimgrep /" . expand("<cword>") . "/gj **/*" <Bar> lw<CR>
這裡將 <f3> 換成 sr: search的意思.  因為f3 是全域性搜尋的意思.

上述配置完成後,在vim中當前游標下,按下F3就會在vim的當前目錄下搜尋所有的檔案及其子資料夾的檔案,並顯示出來,還可以使用 %:e 來做,意思是當前目錄(%)下的同型別檔案(e),如下:
map <F3> :execute "lvimgrep /" . expand("<cword>") . "/gj " . expand("%:e") <Bar> lw<CR>   
這裡的 <cword> 就是 current word 當前單詞, 用 expand("<cword>") 函式處理後, 就表示, 擴充套件 .連線當前游標所在的字串...

因為vimgrep 在搜尋時, 要執行vim的時序, 所以速度較慢, 為了提高速度, 可以關閉 autocmd: 即: noautocmd.
因此總的配置命令就是:

map sr :noautocmd execute "vimgrep /" . expand("<cword>") . "/gj **/*" <Bar> cw<CR>

### 注意這裡, 最好是, 用 vimgrep和cw, 來操作 quickfix視窗,  就可以使用quickfix的跳轉命令cn, cp cl, cc, cw等, 而如果使用lvimgrep的話, 就不好跳轉....

使用vundle的好處是:

  1. .vim下就只有三個: vimrc, bundle, after. 一般只有after(autoload), 沒有before. after主要是用來執行外掛在執行後的一些動作. 所有的 安裝的外掛, 都集中放在bundle目錄下, 而且是分門別類的, 按一個外掛一個目錄的方式來組織的. 這樣就不會因為 多個外掛, 都有autoload, after, 都有相同的檔名或子目錄, 當他們放到vimfiles的autoload, plugins中時, 發生混亂和混淆.
    821299-20170628102604149-1988180756.png

搜尋檔案和搜尋內容的區別
搜尋檔案, 是按檔名/檔案型別來搜尋的, 搜尋結果和目的是, 要找到我們所需要的檔案. 常用的命令是find, fuzzyfinder, ctrlp, unite等外掛
而搜尋內容, 則是進入到檔案內, (僅限於文字 行 檔案), 使用grep( gnu, regular print) 正規表示式 對檔案內容進行搜尋. 它的目的是搜尋檔案內容, 搜尋字串.


vim tabular外掛的使用

  1. 由於tabular是放在github上的, 而且有作者 , godlygeek/tabular, 所以 vundle的安裝方式, 就是: Plugin 'godlygeek/tabular'
  2. tabular的命令是: Tab /{對齊的符合} , 比如按照等號對齊, 就是 :Tab /=, 按照大括號拉對齊就是: Tab /{ , 但是通常來說, 對齊都是針對 等號的. 所以, 可以把等號對齊對映為快捷鍵, 遇到其他對齊符號的時候, 再輸入一次就好了
  3. 在對映的時候, 不要忘了 最後的 回車<CR> 或 <cr>

821299-20170705082829503-1308615856.jpg

相關文章