最后更新于 .

OK,上一篇文章,我們已經配置好了一個可以正常使用的VIM,那么在我們真正來到程序員的VIM世界之前,希望你能在VIM里面再多加下面幾個配置。

set go= "無菜單、工具欄"

對,讓我真正拋棄鼠標,進入美妙的VIM之旅吧!

首先說說一個IDE應該有的幾個功能:

1)源代碼結構及函數列表

2)變量定義支持跳轉等

3)代碼自動補全 當然VIM還給了我們幾個小驚喜:

4)快速批量注釋與反注釋

5)由注釋直接生成文檔

6)文件頭作者信息自動添加

7).cpp和.h文件之間的快速切換

那么接下來,我們久來看看我們將會用到的插件列表。

首先介紹一下一些必備知識,我們需要下面兩樣東西,來輔助完成vim成為IDE的大業--ctags和cscope,這兩樣東西不是vim的插件而是可執行程序,linux和windows下都有。ctags主要實現了c、c++、java、c#等語言的智能分析,并聲稱tags文件,后面所有的包括函數列表顯示,變量定義跳轉,自動補全等,都要依賴于他。有了tags文件后,只需要在變量上按下 CTRL + ]鍵,就可以自動跳到變量定義的位置。而cscope據說誕生就是為了來替代ctags的,因為他有著比ctags更加強大的功能,舉個例子,ctags只能分析出這個函數在哪里被定義,而cscope除了這一點之外,還能分析出這個函數再哪里被調用。當然cscope目前還是有不少bug的,但是也不影響我們的使用。

1)taglist.vim 實現了源代碼結構和函數列表的展示,功能非常強大

2)有了tags就自動支持了

3)omnicppcomplete.vim 實現寫C/C++語言時自動補全

4)NERD_commenter.vim 注釋插件

5)DoxygenToolkit.vim 由注釋生成文檔,并且能夠快速生成函數標準注釋

6)這段配置是本人自己寫的稍后貼出。

7)a.vim 實現.cpp和.h快速切換

下面一個個的講解配置: 注意,請先檢查是否有如下配置,如果沒有請添加:

if(has("win32") || has("win95") || has("win64") || has("win16"))
    let g:vimrc_iswindows=1
else
    let g:vimrc_iswindows=0
endif
autocmd BufEnter * lcd %:p:h

首先確認安裝了ctags和cscope,并且確認這兩個可執行程序所在的目錄已經放進環境變量里面。(必須做,否則后邊都無法操作) 在vimrc中配置如下:

map <F12> :call Do_CsTag()<CR>
nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>:copen<CR>
nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR>:copen<CR>
nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>:copen<CR>
nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR>:copen<CR>
nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR>:copen<CR>
nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>:copen<CR>
nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>:copen<CR>
function Do_CsTag()
    let dir = getcwd()
    if filereadable("tags")
        if(g:iswindows==1)
            let tagsdeleted=delete(dir."\\"."tags")
        else
            let tagsdeleted=delete("./"."tags")
        endif
        if(tagsdeleted!=0)
            echohl WarningMsg | echo "Fail to do tags! I cannot delete the tags" | echohl None
            return
        endif
    endif
    if has("cscope")
        silent! execute "cs kill -1"
    endif
    if filereadable("cscope.files")
        if(g:iswindows==1)
            let csfilesdeleted=delete(dir."\\"."cscope.files")
        else
            let csfilesdeleted=delete("./"."cscope.files")
        endif
        if(csfilesdeleted!=0)
            echohl WarningMsg | echo "Fail to do cscope! I cannot delete the cscope.files" | echohl None
            return
        endif
    endif
    if filereadable("cscope.out")
        if(g:iswindows==1)
            let csoutdeleted=delete(dir."\\"."cscope.out")
        else
            let csoutdeleted=delete("./"."cscope.out")
        endif
        if(csoutdeleted!=0)
            echohl WarningMsg | echo "Fail to do cscope! I cannot delete the cscope.out" | echohl None
            return
        endif
    endif
    if(executable('ctags'))
        "silent! execute "!ctags -R --c-types=+p --fields=+S *"
        silent! execute "!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ."
    endif
    if(executable('cscope') && has("cscope") )
        if(g:iswindows!=1)
            silent! execute "!find . -name '*.h' -o -name '*.c' -o -name '*.cpp' -o -name '*.java' -o -name '*.cs' > cscope.files"
        else
            silent! execute "!dir /s/b *.c,*.cpp,*.h,*.java,*.cs >> cscope.files"
        endif
        silent! execute "!cscope -b"
        execute "normal :"
        if filereadable("cscope.out")
            execute "cs add cscope.out"
        endif
    endif
endfunction

1)taglist.vim 先截個圖給大家看下:

taglist

把taglist.vim放在plugin目錄下后,在vimrc中添加如下的配置:

"進行Tlist的設置
"TlistUpdate可以更新tags
map <F3> :silent! Tlist<CR> "按下F3就可以呼出了
let Tlist_Ctags_Cmd='ctags' "因為我們放在環境變量里,所以可以直接執行
let Tlist_Use_Right_Window=1 "讓窗口顯示在右邊,0的話就是顯示在左邊
let Tlist_Show_One_File=0 "讓taglist可以同時展示多個文件的函數列表,如果想只有1個,設置為1
let Tlist_File_Fold_Auto_Close=1 "非當前文件,函數列表折疊隱藏
let Tlist_Exit_OnlyWindow=1 "當taglist是最后一個分割窗口時,自動推出vim
let Tlist_Process_File_Always=0 "是否一直處理tags.1:處理;0:不處理。不是一直實時更新tags,因為沒有必要
let Tlist_Inc_Winwidth=0

2)已經在上面解釋過,所以這里不再做贅述 OK,到這里,我們已經能夠成功的顯示函數列表和查看函數定義了,閱讀代碼已經沒有問題了,剩下的就是要在寫代碼過程中用到的插件啦,我們在把VIM打造成一個真正的IDE(3)中繼續~

Pingbacks

  1. 學習vim | 學編程 on #

    [...] 把VIM打造成一個真正的IDE(2) [...]

  2. 無所不能的vim-vim到底能做什么 | 三月鳥社 on #

    [...] 3.快速查找函數定義功能及顯示函數列表功能vim+tags+taglist即可輕松實現上面的功能,功能上完全可以替代si或者vs.詳見:把VIM打造成一個真正的IDE(2),在Vim中使用ctags [...]

  3. Vim使用筆記-編程相關插件 &#124; sosowo&#039;s blog on #

    [...] 但是,只有這個插件暫時效果不佳,需要ctags和cscope的支持。 而我已經在vimrc當中加入了生成tags文件的函數和快捷鍵映射,設置詳見: 把vim打造成一個真正的IDE-2。 [...]

  4. gvim安裝和配置 | Xeno Joshua on #

    [...] “把VIM打造成一個真正的IDE”系列貼,感覺不錯:分為篇1、篇2、篇3 [...]

  5. 無所不能的vim-vim到底能做什么 | Vim中文網 on #

    [...] vim+tags+taglist即可輕松實現上面的功能,功能上完全可以替代si或者vs.詳見:把VIM打造成一個真正的IDE(2),在Vim中使用ctags [...]

  6. 【轉】在Vim中使用ctags | 在路上 on #

    [...] 另外,tags必須在vim運行的當前目錄,才能在vim里面正確跳轉,當然也不是沒有辦法解決:settags=”tags的文件路徑”即可,不過如果像我前面文章說的那樣定義了F12來快速生成tags的話(快速連接),也不會經常用到更改路徑吧,哈哈。 [...]

  7. 用VIM打造屬于自己的IDE | fumin&#039;s blog on #

    [...] [1] 把VIM打造成一個真正的IDE(1) [2]?把VIM打造成一個真正的IDE(2) [3] 把VIM打造成一個真正的IDE(3). [4] Vim的快速注釋插件NerdCommenter 此條目由 [...]

  8. Vim編程相關插件 | ISDEREK&#039;s Blog on #

    [...] 但是,只有這個插件暫時效果不佳,需要ctags和cscope的支持。 而我已經在vimrc當中加入了生成tags文件的函數和快捷鍵映射,設置詳見:?把vim打造成一個真正的IDE-2。 [...]

  9. 把VIM打造成一個真正的IDE | Anntony&#039;s personal blog on #

    [...] 加用戶信息,那還差的很遠哦,就請期待下一篇吧 &#8212;&#8211;把 VIM打造成一個真正的IDE(2)。 [...]

  10. 把VIM打造成一個真正的IDE | Anntony&#039;s personal blog on #

    [...] if(has(&#8220;win32&#8243;) || has(&#8220;win95&#8243;) || has(&#8220;win64&#8243;) || has(&#8220;win16&#8243;)) &#8220;判定當前操作系統類型 let g:iswindows=1 else let g:iswindows=0 endif set nocompatible &#8220;不要vim模仿vi模式,建議設置,否則會有很多不兼容的問題 syntax on&#8221;打開高亮 if has(&#8220;autocmd&#8221;) filetype plugin indent on &#8220;根據文件進行縮進 augroup vimrcEx au! autocmd FileType text setlocal textwidth=78 autocmd BufReadPost * if line(&#8220;&#8217;&#8221;&quot;) &gt; 1 &amp;&amp; line(&#8220;&#8217;&#8221;&quot;) &lt;= line(&#8220;$&#8221;) | &#8220;實現打開同一文件時,vim能夠自動記住上一次的位置 exe &#8220;normal! g`&#8221;&quot; | endif augroup END else set autoindent &#8221; always set autoindenting on &#8220;智能縮進,相應的有cindent,官方說autoindent可以支持各種文件的縮進,但是效果會比只支持C/C++的cindent效果會差一點, 但筆者并沒有看出來 endif &#8221; has(&#8220;autocmd&#8221;) set tabstop=4 &#8220;讓一個tab等于4個空格 set vb t_vb= set nowrap &#8220;不自動換行 set hlsearch &#8220;高亮顯示結果 set incsearch &#8220;在輸入要搜索的文字時,vim會實時匹配 set backspace=indent,eol,start whichwrap+=&lt;,&gt;,[,] &#8220;允許退格鍵的使用 if(g:iswindows==1) &#8220;允許鼠標的使用 &#8220;防止linux終端下無法拷貝 if has(&#8217;mouse&#8217;) set mouse=a endif au GUIEnter * simalt ~x endif &#8220;字體的設置 set guifont=Bitstream_Vera_Sans_Mono:h9:cANSI &#8220;記住空格用下劃線代替哦 set gfw=幼圓:h10:cGB2312 OK,有了上面的基本設置,一個好用的vim就配置好了,但是如果想讓它完美支持各種源代碼文件,想讓它方便的注釋,方便的進行代碼提示,方便的添 加用戶信息,那還差的很遠哦,就請期待下一篇吧 &#8212;&#8211;把 VIM打造成一個真正的IDE(2)。 把VIM打造成一個真正的IDE(2) [...]

  11. vim配置攻略-打造自己的IDE | Cherrot on #

    [...] 把VIM打造成一個真正的IDE(2) 雖然這里作者使用的ctags,但其定義的函數已經可以支持cscope,而且跨平臺 [...]

  12. 關于vim的問題 - Linux/Unix - 開發者第1834485個問答 on #

    [...] 把VIM打造成一個真正的IDE(2) [...]

  13. 在vim中使用ctags | 淚痕湮滅 on #

    [...] 另外,tags必須在vim運行的當前目錄,才能在vim里面正確跳轉,當然也不是沒有辦法解決:settags=&#8221;tags的文件路徑&#8221;即可,不過如果像我前面文章說的那樣定義了F12來快速生成tags的話(快速連接),也不會經常用到更改路徑吧,哈哈。 [...]

  14. 在vim中使用ctags | 淚痕湮滅 on #

    [&#8230;] 另外,tags必須在vim運行的當前目錄,才能在vim里面正確跳轉,當然也不是沒有辦法解決:settags=&#8221;tags的文件路徑&#8221;即可,不過如果像我前面文章說的那樣定義了F12來快速生成tags的話(快速連接),也不會經常用到更改路徑吧,哈哈。 [&#8230;]

Pingbacks已打開。

Trackbacks

引用地址

評論

  1. isunbo

    isunbo on #

    function Do_CsTag(){}endfunction 之間少了一個endif.^_^
    taglist.vim插件的效果看到了,但是showfunc.vim放到vimfiles/plugin目錄下后,不知道為什么并沒有提示函數定義和匹配tags.

    Reply

    1. Dante

      Dante on #

      咦,奇怪,我試了代碼沒有問題哦,要按F12生成tags的~~ 然后在函數讓按fd,是這樣的嗎?

      Reply

      1. isunbo

        isunbo on #

        按F12了,ctags和cscope也應該是正確配置的.
        "然后在函數上按fd"是什么意思?怎么按?

        Reply

        1. Dante

          Dante on #

          就是在普通模式下,直接按下fd哦

          Reply

  2. master12

    master12 on #

    請問
    把taglist.vim和 showfunc.vim插件放到plugin里
    這里的plugin是指/usr/share/vim/vim76/plugin/
    還是指什么? 還是指在當前用戶主目錄下建一個plugin

    Reply

    1. Dante

      Dante on #

      在用戶主目錄建立一個.vim/plugin 即可

      Reply

  3. master12

    master12 on #

    哦 謝謝
    樓主曬曬你vimrc唄

    Reply

    1. Dante

      Dante on #

      嗯啊,一直在醞釀著放出來呢,其實也都是些很普通的配置,不過還是先整理一下,免的放出來亂七八糟的……哈哈,等忙過這一陣就一定放出來和大家交流~~

      Reply

  4. wzdxt

    wzdxt on #

    你好!
    非常感謝能與我們分享你的經驗!
    關于那個showfunc.vim,在函數上按fd顯示原型能正常使用 但輸入func(后沒有顯示函數定義原型 是什么原因呢?
    會不會跟操作系統有關?我用的是ubuntu

    Reply

    1. Dante

      Dante on #

      應該不會呀,我在linux下終端下試過的~~ 是suse10,哦,對了,你的vim版本是多少的?

      Reply

      1. wzdxt

        wzdxt on #

        ubuntu 9.10
        vim 7.2
        如果是版本問題的話那就算了 其實影響也不是很大

        Reply

        1. Dante

          Dante on #

          呃,我也使用vim 7.2哦,只是不知道是不是ubuntu的問題了……

          Reply

  5. benzi

    benzi on #

    cscope 支持PHP嗎,如果可以如何生成?
    omnicppcomplete支持php嗎,如果可以如何使用?

    Reply

    1. Dante

      Dante on #

      呃,對cscope是否支持php沒有過研究哦,只是ctags是支持php的,之前看到過一款類似omnicppcomplete的補全php的插件,可惜忘記了,等我找到的時候告訴你吧。
      omnicppcomplete只能補全C/C++……

      Reply

      1. benzi

        benzi on #

        是的 ctags 支持PHP 謝謝

        Reply

        1. 吳叔

          吳叔 on #

          網上說因為php是類C語言,所以cscope也是支持的,但是有一點小問題.

          Reply

  6. stephenjy

    stephenjy on #

    你好,我在用:call Do_CsTag()時碰到一個很奇怪的問題,執行完這個函數之后,整個屏幕都成了空白,再執行:redr也沒有用,只能c-b c-f上下翻一翻頁才會被刷新,不知道是什么原因造成的。跟蹤發現執行只要執行:
    execute "!xxx"
    都會出現這種現象,不管前面有沒有silent,不知何故。

    P.S. 函數中刪除三個文件,建議把刪除文件提取出來做一個函數:

    function! DeleteFile(dir, filename)
    if filereadable(a:filename)
    if (g:iswindows)
    let ret = delete(a:dir."\\".a:filename)
    else
    let ret = delete("./".a:filename)
    endif
    if (ret != 0)
    echohl WarningMsg | echo "Failed to delete ".a:filename | echohl None
    return 1
    else
    return 0
    endif
    endif
    return 0
    endfunction

    Reply

    1. stephenjy

      stephenjy on #

      評論里面的縮進居然都沒了……

      Reply

    2. stephenjy

      stephenjy on #

      Sorry,描述有點錯誤,是
      silent execute "!xxx"
      會導致上述現象,不知道其他人有沒有碰到過。

      Reply

      1. Dante

        Dante on #

        呵呵,你是用的secureCRT的終端吧,是會出現這個問題的,不是VIM的問題,而是secureCRT本身顯示問題,可以通過CTRL+L來刷新屏幕~

        Reply

        1. stephenjy

          stephenjy on #

          我試了c-l也刷新不了,后來我在那個函數中最后再增加一句執行::redr! 就行了,光是redr不行,要感嘆號。

          Reply

      2. Dante

        Dante on #

        呃,從來沒有遇到過哦,你vim版本是多少呢?

        Reply

        1. stephenjy

          stephenjy on #

          vim-7.2.284, Debian/Sid, gnome-terminal
          btw 這個博客不會通過郵件通知回復嗎?

          Reply

      3. Dante

        Dante on #

        會的哦,可能是嵌套層數太多了……
        不過你這個版本應該完全沒有問題才對呀~

        Reply

    3. Dante

      Dante on #

      嗯啊,是可以寫到一起,但是為了長遠看可以將ctags和cscope分開,就還是分開寫了

      Reply

  7. porco_rosso

    porco_rosso on #

    暈死了,F12的效果具體是什么,我是windows,用F3可以生成Tlist,但是F12無效,在后面兩個cscope的命令窗口里總是提示找不到文件,具體怎么樣實在看不清兩個窗口一閃而過。
    cscope我是在這里下的http://code.google.com/p/cscope-win32/。

    ctag和cscope都放到了system32目錄里

    Reply

    1. Dante

      Dante on #

      咦,沒道理呀,F3可以用代表是在path下呀,呃,會在當前目錄生成一個tags文件,以及三個cscope相關的文件,具體名字記不清楚了~

      Reply

    2. porco_rosso

      porco_rosso on #

      搞清楚了錯誤在哪里,但是不能解決,
      silent! execute "!dir /s/b *.c,*.cpp,*.h,*.java,*.cs &gt;&gt; cscope.files 的時候,提示“沒有找到cscope.files”

      然后執行silent! execute "!cscope -b"時,提示“cannt find source file”

      Reply

      1. Dante

        Dante on #

        你的當前目錄里必須有上面那幾種擴展名文件的一種哦

        Reply

        1. porco_rosso

          porco_rosso on #

          不好意思,光忙著自己折騰了,沒想到博主那么晚還在。博主,幫我解答一下我的新問題,謝謝啊!

          Reply

      2. porco_rosso

        porco_rosso on #

        不是沒有找到cscope.files,是沒有找到*.c,*.cpp等這些文件吧,那個命令的意思應該是把這些命令文件名寫入一個cscope.files命令。

        然后第二句應該是根據cscope.files生成cscope.out文件,既然前面沒有找到*.c*.cpp這些文件,當然就不能生成cscope.out了

        所以現在的問題就只是沒有找到*.c和*.cpp這些文件了。

        可是為什么會找不到呢?

        Reply

        1. porco_rosso

          porco_rosso on #

          好奇怪,如果我自己直接在cmd里敲這些dir和cscope命令,就可以生成cscope.files和cscope.out,但是在vim里按F12就不可以。

          我的cscope已經換成了您在《在Vim(gvim)中使用cscope》里提到的http://sourceforge.net/projects/mslk/files/這里的win32版cscope了

          Reply

  8. porco_rosso

    porco_rosso on #

    進一步找到了問題的根源,我的gvim不知道為什么總是在windows/fonts這個文件夾里面搜索,而不是在源代碼當前所在文件夾。
    因為我嘗試在vim里調用dir,顯示的是fonts里的文件
    然后我在這句里silent! execute “!dir /s/b *.c,*.cpp,*.h,*.java,*.cs &gt;&gt; cscope.files 加上了*.ttf,然后按F12就可以在fonts里生成cscope.files了。

    為什么不再當前源代碼文件夾里搜索呢???

    Reply

  9. porco_rosso

    porco_rosso on #

    我自己在vimrc里加了這么一句autocmd BufEnter * lcd %:p:h 來保證工作目錄為當前目錄,這樣子F12可以正常工作了

    Reply

  10. porco_rosso

    porco_rosso on #

    博主啊,我把工作目錄解決了,不知道您能不能給我什么更好的解釋或方法。可是還有個疑惑,
    autocmd BufReadPost *
    \ if line("'\"") &gt; 1 &amp;&amp; line("'\"") &lt;= line(&quot;$&quot;) | &quot;實現打開同一文件時,vim能夠自動記住上一次的位置
    \ exe &quot;normal! g`\&quot;&quot; |
    \ endif

    這個自動記住上一次的位置,真的管用嗎?貌似在我這里不管用。

    Reply

    1. Dante

      Dante on #

      呃,我這里是管用的呀……
      autocmd BufReadPost *
      \ if line("'\"") > 1 && line("'\"") <= line("$") |
      \ exe "normal! g`\"" |
      \ endif

      呃,確實是一模一樣的呢

      Reply

    2. Dante

      Dante on #

      呃,剛看到你說要更好的解釋,汗……

      你應該不是遠程登錄linux,而是直接在linux里面的終端下吧,這樣vim打開的時候的確不會自動cd到這個目錄……

      我也覺得很怪異,但是因為我一般都是遠程ssh到服務器上用,所以一直沒有遇到過這個問題

      Reply

  11. hjs-1122

    hjs-1122 on #

    為什么我的總是找不到模式 該安裝的我也全安裝了啊 ctags 和 cscope 在命令行下敲了也是有用的 按了F12也生成了文件 我用的是linux

    Reply

    1. Dante

      Dante on #

      呃,這樣啊,能把你測試omnicppcomplete.vim那段代碼完整貼出來看一下不?

      Reply

      1. hjs-1122

        hjs-1122 on #

        #include
        using namespace std;
        class A{
        private:
        int a;
        int b;
        public:
        A(int a, int b){
        this-&gt;a = a;
        this-&gt;b = b;
        }
        }
        int main(int argc, char * argv[]){
        A t;
        t.(“在這我用了你說的F12 前面的插件我也裝好了,CTRL+X,CTRL+O vim 說模式找不到”)
        }

        Reply

        1. Dante

          Dante on #

          額,你建立的文件名是?

          Reply

        2. Dante

          Dante on #

          汗, 你class的語法寫錯了。
          class A{
          private:
          int a;
          int b;
          public:
          A(int a, int b){
          this->a = a;
          this->b = b;
          }
          }

          最后要有一個分號…… (;)

          Reply

  12. hjs-1122

    hjs-1122 on #

    是在這上面忘打上了

    Reply

  13. hjs-1122

    hjs-1122 on #

    能加我QQ嗎 575754703

    Reply

  14. hjs-1122

    hjs-1122 on #

    大俠 小弟搞了好長的時間也沒搞好 幫幫我這個采用vim的小弟吧

    Reply

    1. Dante

      Dante on #

      啊,不好意思啊,剛才一直在搞博客,cnzz的統計又抽風了,我現在加你~

      Reply

  15. hjs-1122

    hjs-1122 on #

    // 文件名test.cpp
    class A{
    private:
    int a;
    int b;
    public:
    A(int a, int b){this-&gt;a = a ; this-&gt;b = b;}
    };

    int main(int argc, char * argv[])
    {
    A a;
    a.(之后就報全能補全(^O^N^P)找不到模式)

    }

    也建立了 tags 和cscope.file 和 cscope.out

    Reply

    1. Dante

      Dante on #

      按道理應該沒問題的……,我加你QQ了,貌似你沒通過?

      Reply

  16. hjs-1122

    hjs-1122 on #

    樓主 你見過我這種情況嗎

    Reply

  17. hjs-1122

    hjs-1122 on #

    大俠 搞好了 原來我的tags設置少寫了一個等號(=) 我有兩個tags 一個是set tags = /home/hjs-wcl/C++/ 還有一個是 tags=/home/hjs-wcl/.vim/tags/cpp

    應該在寫成 tags+= ……
    謝謝大俠了 你的博客 真贊!!!!

    Reply

    1. Dante

      Dante on #

      哈哈,搞定了就好呀~~
      有問題隨時聯系~~~

      Reply

  18. vimer新人

    vimer新人 on #

    您好:
    我看見statusline欄上能夠顯示文件的編碼格式,請問這個參數是什么啊。

    Reply

    1. Dante

      Dante on #

      set statusline=%k%F[%{&ff}:%{&fenc}]%m%r%h%w\ %=[%l,%c]

      其中%{&fenc}就是

      Reply

      1. vimer新人

        vimer新人 on #

        謝謝了

        Reply

  19. raolairaoqu

    raolairaoqu on #

    我剛接觸vim,想先看一下效果全開的感覺,就按您寫的試了試。當我配置完taglist的時候,打開程序,結果list里沒函數名和庫函數,這是怎么回事?

    Reply

    1. Dante

      Dante on #

      1.你打開的文件名是啥?
      2.文件路徑又沒有包含中文?
      3.是否安裝了ctags,并且在環境變量里

      先排除下這三個問題~~

      Reply

      1. raolairaoqu

        raolairaoqu on #

        文件名是數字,
        路徑沒中文
        我ctags不是很會配置,我把ctags.exe放進了c:\program files\vim\vim72里面,環境變量是c:\program files\vim\vim72。但是ctags文件夾里面剩下的文件不知道怎么辦。能不能講一講ctags的具體配置方法。

        Reply

        1. Dante

          Dante on #

          ctags就是放到path里面就可以哦,奇怪了,沒有報任何錯誤嗎?你不是在桌面上打開文件的吧?

          Reply

          1. raolairaoqu

            raolairaoqu on #

            哦。現在能用了,謝謝。看完(3)還有2個問題,c-]不能用,omnicppcomplete也不不能用,提示找不到。還有就是ctag附帶的那些文件有什么用?

            Reply

            1. Dante

              Dante on #

              ctags附帶的文件都是沒有用的,
              你有生成ctags文件嗎?

              Reply

            2. raolairaoqu

              raolairaoqu on #

              我試了下把源文件拷到了ctags自帶的文件夾里和里面的文件一起f12,c-],和代碼補全都能用了。

              Reply

              1. raolairaoqu

                raolairaoqu on #

                汗,其實是我選的程序太簡單,所以一直以為c-]不能用。問題就剩一個了:omnicppcomplete的問題,把源文件拷到了ctags自帶的文件夾里和里面的文件一起f12就可以不全,不防在一起就提示找不到。麻煩你了。

                Reply

                1. raolairaoqu

                  raolairaoqu on #

                  是我錯了,我一直在輸庫函數里的函數,所以一直不能代碼不全,我輸了一下自己定義的函數就ok了。占了這么多地方說了一堆廢話,真的是不好意思,能刪的話就刪掉吧,給您添嘛煩了。

                  Reply

  20. ideepblue

    ideepblue on #

    博主 我按照你的設置都弄了,但是source _vimrc的時候會報錯,說
    函數 Do_Cstag 已存在,請加!強制替換。
    這個該怎么解決?

    Reply

    1. Dante

      Dante on #

      呃,不需要source vimrc吧?自動就會載入配置文件的~

      Reply

      1. ideepblue

        ideepblue on #

        修改了vimrc不source咋立刻生效?

        Reply

        1. ideepblue

          ideepblue on #

          我知道了 函數一般就加載一次 會說已存在很正常
          謝謝博主~

          Reply

          1. xiao

            xiao on #

            如何可以使這種提示不顯示,每次重載vim配置就會跳出

            Reply

            1. nedzqbear

              nedzqbear on #

              在函數名后加一個感嘆號。

              function Do_CsTag() 修改成
              function! Do_CsTag()

              這樣重載vim配置時,就不會報錯了。

              Reply

              1. Dante

                Dante on #

                嗯,是這樣的。

                Reply

  21. pwangeng

    pwangeng on #

    F12功能:

    處理 function D_CsTag 時發生錯誤:
    第3行:
    E121: 未定義的變量:g:iswindows
    E15: 無效的表達式:(g:iswindows==1)
    第8行:
    E121: 未定義的變量:tagsdeleted
    E15: 無效的表達式:(tagsdeleted!=0)

    Reply

    1. Dante

      Dante on #

      iswindows是之前定義的一個變量……
      if(has("win32") || has("win95") || has("win64") || has("win16"))
      let g:vimrc_iswindows=1
      else
      let g:vimrc_iswindows=0
      endif

      Reply

  22. david

    david on #

    請問如何實現自動補齊引號?(各種括號已經可以自動補齊了)謝謝。

    Reply

  23. abc881858

    abc881858 on #

    我只是奇怪 vissual assist 沒人用嗎? VS專用

    Reply

    1. Dante

      Dante on #

      呵呵,大學時候看到同宿舍的同學有用的,可能也是工作的原因吧,我幾個做游戲開發的同事確實用vs比較多。。。
      不過我是做啥開發都用vim,習慣了。。

      Reply

  24. nan

    nan on #

    請教博主個問題。小弟在c++頭文件中聲明的類成員函數,taglist運行也沒問題,都可以正常跳轉,但是如果打開頭文件,taglist的窗口里卻不顯示這些聲明過的函數和成員變量。只有在頭文件中實現的類成員函數可以正常顯示。
    由于實驗室權限森嚴,所以小弟只有ctags, 沒有cscope.
    平臺: Debian + Vim 7.2

    Reply

    1. Dante

      Dante on #

      呃,這個問題我確實也存在,不過覺得沒有什么妨礙就沒有管他了,taglist的實現可能就是默認這樣的。。只是猜測,并沒有詳細看過taglist的源碼

      Reply

  25. zhoulong

    zhoulong on #

    請問fd是什么啊?不懂。。。怎么出showfunc的效果呢

    Reply

  26. aijieqiang

    aijieqiang on #

    你的color scheme叫什么

    Reply

    1. Dante

      Dante on #

      desertex ,也用wombat

      Reply

  27. 老貓

    老貓 on #

    你好,我按照步驟安裝成功以后,現在按F12會生成tags文件,請問能指定這個tags文件的生成地址嗎?想把所有的tags都編輯到一起

    Reply

    1. Dante

      Dante on #

      可以通過 -f 參數指定寫入的tags文件路徑名,當然可以先cd 到對應的目錄,然后執行ctags命令,效果是一樣的。

      Reply

  28. aoyoo

    aoyoo on #

    你好, 我安裝完成后, 按F12也正常
    但是在某變量名按 CTRL+ ] 有時會提示:
    找到 tag: 1/2 或更多

    大概是因為代碼中有重載的變量名
    此時只能定位到其中一處,不知道怎么定位到其他的聲明變量的地方

    請問有解決的辦法么?

    Reply

    1. Dante

      Dante on #

      呵呵,輸入
      :ts
      就可以了,在本博另一篇專門介紹ctags的文章里面有說~~

      Reply

  29. 吳叔

    吳叔 on #

    請問博主這個您寫的那個showfunc可以用在php和javascript上面嗎?

    Reply

    1. Dante

      Dante on #

      應該是不支持的哦,我記得當年寫的時候只支持了c++,java和c#~

      Reply

      1. 吳叔

        吳叔 on #

        是不支持,強烈建議博主加入autocmd BufEnter * lcd %:p:h 這一句,沒有這句我一直出錯..總是把VIM目錄當作我的操作目錄,if(has("win32") || has("win95") || has("win64") || has("win16"))
        let g:iswindows=1
        else
        let g:iswindows=0
        endif這段最好也加上,因為好多像我這樣的新手開始都沒有看前面的文章了

        Reply

        1. Dante

          Dante on #

          好~~ 我加一下~~
          autocmd BufEnter * lcd %:p:h
          這句不加確實有人有問題有人沒問題。。。我還是統一加一下吧
          g:iswindows這里我也加一下,呵呵~

          Reply

  30. 光頭大叔

    光頭大叔 on #

    我想問一下,為什么那個showfunc有時候不起作用,
    比如說:printf( 會出現提示, scanf( 卻不會出現,
    tags文件我已經按要求生成好了,怎么樣都不出現提示,求解,謝謝。

    echo_func也是,code_complete也是

    Reply

  31. zpcat

    zpcat on #

    博主:請教一個vim使用tags的問題:
    我的vim7.2用c-] 跳轉時,如果有很多項目時會出現選擇的的列表 (即:ts).
    現在用fedora14 vim7.3, 發現沒有默認出現選擇列表,而是直接跳到第一匹配的地方。還要輸入:ts來選擇。不知道該怎樣設置?

    Reply

    1. Dante

      Dante on #

      在vimrc中加入:
      map &lt;C-]&gt; g&lt;C-]&gt;
      即可

      Reply

  32. osal

    osal on #

    是什么意思按什么鍵?

    Reply

  33. springlie

    springlie on #

    關于showfunc.vim,有兩個小小疑問:

    1 當fd發現函數有多個定義,但下方只顯示第一條,如何在定義之間切換

    2 “另外還實現了當輸入'('時,會自動匹配tags,展示函數的定義原型。”,這個功能怎么實現,是在神馬模式下,光標處于哪個位置的時候輸入'('?折騰了半天沒弄出來。

    Reply

    1. Dante

      Dante on #

      對第一個問題
      alt + +
      alt + -

      對第二個問題,就是在插入模式下輸入'('

      Reply

      1. springlie

        springlie on #

        第一個問題解決。

        第二個,在輸入’(‘的瞬間,定義出現了一下,但是馬上就消失了,求解。

        :)

        Reply

        1. Dante

          Dante on #

          那可能是和一些其他插件有沖突。。

          Reply

          1. springlie

            springlie on #

            關于插入模式下輸入’(‘瞬間一閃的問題,當時只有少量幾個常用插件,應該不會沖突。
            特地換上echofunc看了下,發覺可以正常顯示。
            博主的插件是不是哪里有些小疏忽。。。

            Reply

            1. Dante

              Dante on #

              很久沒更新了。。echofunc已經把bug修復的話,我抽時間把文章里換成echofunc吧,哈哈

              Reply

  34. 機器貓

    機器貓 on #

    在哪里下載taglist.vim文件呀

    Reply

  35. 機器貓

    機器貓 on #

    google 到了,在http://vim-taglist.sourceforge.net/
    還以為也是博主寫的

    Reply

    1. Dante

      Dante on #

      呵呵,vim.org上也有下載的,可以看一下置頂帖中的插件列表,那里更全一些。

      Reply

  36. Rongzq

    Rongzq on #

    Hi Dante,
    我在追隨你的腳步學習著Vim, 我有個疑問關于Csope,
    在這段code中
    nmap s :cs find s =expand(""):copen

    Map的是什么按鍵呢? 在Normal時要怎么按?功能是什么?

    謝謝

    Reply

    1. Dante

      Dante on #

      map的是s
      功能是查找一個變量的定義

      Reply

      1. Rongzq

        Rongzq on #

        抱歉, 好像在發表之后s之前的字符沒有了,請看一下您在這篇文章中對于csope的vimrc, 在s之前有的。
        但是我不理解這個《C-@》是什么鍵, Ctrl+@嗎?, 在:map 之后我看得的是《^@》s, 所以我就不明白怎么使用這個快捷鍵了

        Reply

        1. Dante

          Dante on #

          對,實際就是 ctrl + 2,因為ctrl的時候是無視shift的~

          Reply

  37. 嘉謨之行

    嘉謨之行 on #

    為什么按F3 list顯示在右邊。 我要顯示在左邊如何做

    Reply

  38. 嘉謨之行

    嘉謨之行 on #

    不好意思 ,剛看了注釋。 設置為0即可

    。但是最基本的 快捷鍵不會 ,搞成ide 意義不大。

    接觸vim 也有一年了 ,一直 沒怎么深入

    Reply

    1. Dante

      Dante on #

      呵呵,可以嘗試深入一下,vim還是很有魅力的~~

      Reply

  39. jungle

    jungle on #

    你好,最近用插件遇到了一個小問題,之前安裝了echofunc這個插件,剛才直接刪除了這個文件,但是寫代碼的時候使用全能補全的時候提示 沒有echofuncclear 我想知道如何卸載掉一個插件啊

    Reply

    1. Dante

      Dante on #

      呃,vim確實沒有比較好的刪除插件方法,你只能對應那個插件安裝包,把每個文件都刪除。。

      Reply

      1. 依云

        依云 on #

        git 不錯

        Reply

  40. dczsf

    dczsf on #

    請問對應哪個按鍵?腳本配置好了用cscope時不知道怎么按快捷鍵了。

    Reply

  41. dczsf

    dczsf on #

    原來評論里已經有人問了,知道了。

    Reply

  42. zsam

    zsam on #

    處理 function D_CsTag 時發生錯誤:
    第3行:
    E121: 未定義的變量:g:iswindows
    E15: 無效的表達式:(g:iswindows==1)
    第8行:
    E121: 未定義的變量:tagsdeleted
    E15: 無效的表達式:(tagsdeleted!=0)

    前面有人問過,我已經全部加了上面的代碼,為什么按F12后還出現這種錯誤呢?

    Reply

    1. zsam

      zsam on #

      if(has("win32") || has("win95") || has("win64") || has("win16"))
      let g:vimrc_iswindows=1
      else
      let g:vimrc_iswindows=0
      endif
      autocmd BufEnter * lcd %:p:h

      把上面的vimrc_iswindows改為iswindows解決了。。郁悶,怎么有這樣事情呢!!!

      Reply

      1. Dante

        Dante on #

        呃,這個好奇怪。。。從來沒遇到過。。

        Reply

        1. 大尾巴兔

          大尾巴兔 on #

          調試了我好久啊...
          博主一開始定義的是let g:vimrc_iswindows=1

          后面引用的是iswindows.
          所以報錯了.

          Reply

  43. 大尾巴兔

    大尾巴兔 on #

    另外我想問下博主,我在xp下寫java 項目
    如何對整個項目生成tags呢?
    對單個文件按F12后,執行跳轉Ctrl+] 仍然提示未找到tags.

    Reply

    1. 大尾巴兔

      大尾巴兔 on #

      我通過對整個Project 生成tags解決了問題.

      但是我在一個文件中按Ctrl+] 跳轉,然后Ctrl+t 跳回來.
      再按Ctrl+] 的時候又提示未找到tags.

      Reply

      1. 大尾巴兔

        大尾巴兔 on #

        問題解決了.
        通過設置
        set tags=tags;
        set autochdir

        注意第一個命令里的分號是必不可少的。這個命令讓vim首先在當前目錄里尋找tags文件,如果沒有找到tags文件,或者沒有找到對應的目標,就到父目錄中查找,一直向上遞歸。因為tags文件中記錄的路徑總是相對于tags文件所在的路徑,所以要使用第二個設置項來改變vim的當前目錄。

        Reply

  44. Lazy.monkey

    Lazy.monkey on #

    請教博主:我用你的設置生成了tags文件,但無法顯示python的函數信息,而同樣的設置c/c++都顯示正常,求解。。。

    Reply

    1. Lazy.monkey

      Lazy.monkey on #

      博主,找到問題了,為了讓SnipMate支持django的代碼片段補全我設置了:
      <pre lang="cpp" line="1">
      au FileType python set ft=python.django
      au FileType html set ft=htmldjango.html
      </pre>
      python的FileType就被修改為python.django了,taglist識別不了,請問博主是如何解決的呢?

      Reply

      1. Dante

        Dante on #

        如果是為了snipmate的話,其實你可以把snip文件改名字:
        python-django.snippets
        我就是這么做的。

        Reply

        1. Lazy.monkey

          Lazy.monkey on #

          哦。。。好吧,這樣的話也可以,十分感謝!

          Reply

  45. 笨笨

    笨笨 on #

    if(has("win32") || has("win95") || has("win64") || has("win16"))
    let g:vimrc_iswindows=1
    else
    let g:vimrc_iswindows=0
    endif
    autocmd BufEnter * lcd %:p:h

    g:vimrc_iswindows 應該是 g:iswindows

    Reply

    1. Dante

      Dante on #

      嗯,是呢。。因為中間也改了很多次。。

      Reply

  46. bingoboy

    bingoboy on #

    博主。。那個環境變量是指PATH嗎

    Reply

    1. Dante

      Dante on #

      是的哈

      Reply

      1. bingoboy

        bingoboy on #

        謝咯。。我回去試下。。。

        Reply

  47. vimrc配置小建議

    vimrc配置小建議 on #

    在1)taglist.vim 那段的vimrc配置代碼中,第9行的注釋( "是否一直處理tags.1:處理;0:不處理)最好并到上一行行尾;或者在之前的配置代碼中加入set paste命令。
    不然vimer們在復制這一段到vimrc時最后兩行會被自動注釋掉。

    樓主的文章寫得很好,非常實用,大贊一個!!!

    Reply

    1. Dante

      Dante on #

      感謝提醒,已經修改!

      Reply

  48. bughou

    bughou on #

    一個ctags / cscope問題請教:
    我們的c++代碼里有很多類,每個類都有一些同名的方法,比如:Initialize(),Resume()之類的,這樣在CTRL+] 對這些方法調用進行跳轉的時候 這些類一下子都彈出來了,幾十個讓我選,有沒有什么方法,可以根據方法前面的類名或者對象名,智能識別出是哪個類的方法啊?就像vs那樣。這個問題一直困擾著我和身邊的同事,望賜教。

    Reply

    1. Dante

      Dante on #

      這個問題的確是這樣。。目前我也沒有找到很好的解決方法。。

      Reply

  49. ccheng

    ccheng on #

    博主,你之前也用vim開發過java嗎?那你用代碼補全嗎,我現在一直沒在vim里面找到好的java補全插件

    Reply

    1. Dante

      Dante on #

      嗯, 很早很早了。。有一個叫 Vim Intellisense 貌似可以做到,當時還測試過。

      Reply

  50. lemon

    lemon on #

    這個都是在linux下的么?我下載的ctags-5.8居然是rpm文件,windows下不會用.請教一下,因為我剛接觸vim

    Reply

    1. Dante

      Dante on #

      windows下也有ctags的,google一下吧,地址我記不清了。。

      Reply

      1. lemon

        lemon on #

        呵呵,謝謝回復~這幾天一直在弄,已經都整好了,再次感謝

        Reply

  51. happypeter

    happypeter on #

    http://happycasts.net/episodes/1
    一個ctags視頻

    Reply

    1. Dante

      Dante on #

      看了一下,講的太淺了,不過對入門的朋友很有幫助。

      Reply

      1. happypeter

        happypeter on #

        感謝關注,在revised版里我會在豐富一些內容的。

        Reply

        1. Dante

          Dante on #

          不客氣,加油!歡迎分享!

          Reply

        2. happypeter

          happypeter on #

          Here comes the revised version:

          http://happycasts.net/episodes/25

          Reply

  52. wayn

    wayn on #

    ls好,我問下,有沒有哪個補全插件能提示整個tags文件中的function,我現在用的acp阿,neocomplcache阿,都是只能自動提示vim打開的文件中的function阿。求助ing.

    Reply

    1. Dante

      Dante on #

      C-X C-O 不行么?

      Reply

    2. happypeter

      happypeter on #

      try `:ptag your_function_in_tags_file`

      Reply

  53. JLQSheenero

    JLQSheenero on #

    為什么我在.vimrc中加入autocmd BufEnter * lcd %:p:h之后,重啟vim,編輯一個文件,用pwd查看當前目錄,發現還是啟動vim時的目錄。但是如果在vim中直接執行autocmd...之后效果是正常的

    Reply

    1. Dante

      Dante on #

      加上echo看看是否執行了?

      Reply

  54. xxx

    xxx on #

    請問按不顯示C代碼函數列表只顯示一個窗口,但-vimrc文件可以顯示函數列表是怎么回事啊??

    Reply

    1. xxx

      xxx on #

      少打了個F3

      Reply

  55. ypchenry

    ypchenry on #

    你好,我在ubuntu12.04下配置home下.vimrc,syntax enable syntax on filetype plugin indent on 等等后,把vim安裝目錄下的c.vim cpp.vim等復制到~/.vim/ftplugin/下,不能顯示C 語言等語法高亮 ,請問您知道怎么解決么?(加環境變量export TERM=xterm-color也不行)

    Reply

  56. Y--

    Y-- on #

    博主你好,
    我在win 下用gvim,當我按v切換到“可視模式“后,光標從方塊變成了豎線,而這個豎線是停在方塊所選的字的左邊,所以,如果只想要選中某一行的最后一個字,好像不行。而在linux下,光標在可視模式下還是方塊。
    請問,能否把在win下的GVIM的可視模式下的光標變成還是像linux那樣還是方塊 。

    Reply

  57. Y--

    Y-- on #

    補充請教,
    現在會把光標變成方塊了。
    不過本質問題還是沒有解決。

    就是windows下,gvim,可視模式下,方塊停在的那個字符,如果向左選的話,這個字符是選不中的。向右選是選中的。

    好像在Linux下,不管是向左還是向右,當前字符是選中的了吧。
    如何跟linux一樣呢?

    Reply

    1. Dante

      Dante on #

      我在windows試了一下是正常的哦,你是不是對光標做了配置。

      Reply

      1. Y--

        Y-- on #

        -_- 果然,win下gvim默認有一段vimrc的,非常感謝博主~

        Reply

  58. zhangqin

    zhangqin on #

    博主,你好,請問這個是什么問題 E488: Trailing characters 呵呵

    Reply

    1. Dante

      Dante on #

      呃,一般是字符不對

      Reply

  59. wing

    wing on #

    博主你好, 你的文章相當實用.
    這次有問題請教:
    我在運行lua, python之類的程序時候, 一般是以 :!lua % 之類來啟動的, 但是有時候需要在運行的時候再查看源碼, 這時候切換回來就卡的要命...
    然后我想到的是以:!start lua % 來解決... 但是這回不但命令增長了,還要添加額外的語句來讓程序停下來.
    請問您有碰到這樣的問題沒? 應該如何解決?
    謝謝了 :)

    Reply

  60. Mocker

    Mocker on #

    windows下,cd到工程目錄無法生成.out,cscope: no source files found,神馬情況。只有files文件

    Reply

  61. Mocker

    Mocker on #

    找到問題了,貌似是中文路徑的問題

    Reply

  62. xxx

    xxx on #

    見過的最爛的教程,沒有之一

    Reply

    1. Dante

      Dante on #

      如果想學別人東西的人都是你這種態度,我很擔心互聯網上是否還有人愿意分享。

      Reply

  63. xcxinghai

    xcxinghai on #

    你好,看了您的博客,現在c++的代碼終于可以自動補全了。但是在補全的代碼的時候還有點缺陷。就是彈出的選擇的函數的背景顏色是粉紅色,選擇哪一個函數則是黑色,而我的vim的背景顏色是黑色,所以,最上面喝最下面的函數被選擇時,看得很不明顯。不知到可不可以自己設置顏色,補全時候的背景?

    Reply

    1. Dante

      Dante on #

      可以換個配色,比如 wombat

      Reply

  64. quhuazhou

    quhuazhou on #

    博主你好,這個文章非常好,我想問下taglist.vim在哪個地方可以下載,謝謝了~

    Reply

  65. quhuazhou

    quhuazhou on #

    博主請問我讀的是android4.1.4的文件系統,如果文件系統更新了,cscope.files和tags也要重新生成么,由于文件系統太大,可不可以只找到改動的地方然后只為改動的地方更新上述2個文件

    Reply

    1. Dante

      Dante on #

      我現在已經基本不用cscope了,只用ctag,ctag是支持單獨生成某個目錄的tags再加載的

      Reply

  66. fouvy

    fouvy on #

    建議樓主把
    map :silent! TlistOpen "按下F3就可以呼出了
    這樣呼出來之后就可以選擇跳到哪個函數拉,(*^__^*) 嘻嘻……

    Reply

  67. book

    book on #

    博主你好,請問你使用的是shell下的vim,還是gvim呢?在shell下用vim,像ctags定位之類的會不會很不方便?

    Reply

  68. lyj

    lyj on #

    您好,看了您的教程,收益頗多,我這里出現了問題,麻煩您解答一下,在vim下敲擊F12后,vim會白屏,不知道這是什么狀況?

    Reply

  69. 番茄紅素

    番茄紅素 on #

    貌似效果很不錯

    Reply

  70. 土豆

    土豆 on #

    求教:我在虛擬機上裝了個ubuntu 10.10,上面默認安裝的不是ctags,而是etags,這樣對咱們的腳本有影響么?
    自動安裝時會把ctags自動添加到path里吧??

    Reply

    1. Dante

      Dante on #

      沒試過。。。

      Reply

  71. qij

    qij on #

    d

    Reply

  72. Danny

    Danny on #

    請教,我在好幾層下用VIM中的Ctrl + ]跳轉說找不到這個函數,因為這個函數定義在上上層的另一個文件夾的文件中,請問博主如何解決啊?
    我試過在項目的根目錄執行ctags -R,可是不管用

    - -!

    Reply

  73. 迷城幻境

    迷城幻境 on #

    博主你好 請教一下 裝了ctags和cscope之后并在.vimrc中配置了 為什么一點F12vim就會白屏?而且用鼠標在空的區域內選取就有可以看到了.

    Reply

  74. vvyang

    vvyang on #

    博主,你好,按照你的分享設置VIM,感覺不錯,這里第49行,貌似多了一個雙引號(“),在mac下ctags沒有-R參數,需要從新安裝一個。還有我這跟lyj和迷城幻想一樣,使用F12之后,會白屏,不知道怎么回事。

    Reply

    1. 波兒

      波兒 on #

      白屏的解決辦法:

      在上面的Do_CsTag()函數的函數體最后一行插入:
      execute "redraw!"
      建議博主大大也把這句加入您的代碼示例中。

      Reply

  75. icewater

    icewater on #

    g:vimrc_iswindows
    g:iswindows
    這兩個變量名不一致,下面Do_CsTag()中語句
    if(g:iswindows==1)
    調用g:iswindows變量是否應改為
    if(g:vimrc_iswindows==1)

    Reply

  76. icewater

    icewater on #

    感謝樓主花時間分享vim教程
    g:vimrc_iswindows
    g:iswindows
    這兩個變量名不一致,下面Do_CsTag()中語句
    if(g:iswindows==1)
    調用g:iswindows變量是否應改為
    if(g:vimrc_iswindows==1)
    這個問題搞了我好長一段時間,改回來之后按F12就可以生成tags,
    再次感謝

    Reply

  77. belonger

    belonger on #

    博主 你好 , 我照你的方法做了。但是在代碼補全時提示 “報全能補全(^O^N^P)找不到模式)”,在我的代碼根目錄下都生產了*out tags 等文件了

    Reply

  78. Willie

    Willie on #

    博主,你好,我照著你的教程設置到2后,按下F12后沒反應,然后在命令行下提示的錯誤信息為:ctags: Warning: cannot open source file "myfile" : No such file or directory
    想請問你一下,我這個問題是出在哪里,我沒有建有“myfile”啊,我試著找了很多資料,但是沒有解決,所以想請教你一下!謝謝!

    Reply

  79. 火冷

    火冷 on #

    請問這里能搜索博文嗎?有方法能方便地找到打造IDE的第1篇?

    Reply

    1. 朱念洋

      朱念洋 on #

      右上角可以了。。之前不小心把搜索框搞丟了。

      Reply

      1. 火冷

        火冷 on #

        哈哈,網上都說youcompleteme很好用,博主沒去試??還想找這個插件的windows版安裝教程哈

        Reply

        1. 朱念洋

          朱念洋 on #

          試過,是還不錯,做了很多優化來提升提示的速度,但是感覺還是太卡,就卸載掉了。

          Reply

          1. Ocean

            Ocean on #

            博主你好,本人新手,在配置的時候把你的代碼粘帖了過來,按F12后不會加載出來,終端上閃過 ctags:warning:cannot open source files ".mozilla.firefox/..." 還有能不能詳解一下怎樣將執行程序加入環境變量,十分感謝

            Reply

  80. 巖會

    巖會 on #

    念洋,檢查配置用的變量為:g:vimrc_iswindows在后面使用的時候,使用的是:g:iswindows

    Reply

  81. huhuhaha

    huhuhaha on #

    首先確認安裝了ctags和cscope,咋安裝啊,說明白點行不?

    Reply

  82. sed2x

    sed2x on #

    [?1049h[999;999H[6n[1;1H[J[2;1H~[3;1H~[4;1H~[5;1H~[6;1H~[7;1H~[8;1H~[9;1H~[10;1H~[11;1H~[12;1H~[前有&lt;-好像是回車符行號連起來了,qiuzhu ? huifu EMAIL 也可

    Reply

  83. huixinming

    huixinming on #

    Hi,博主你好,想請教下為什么我的顯示不出來函數列表,我按F12生成了tags,然后按F3,提示“:silent! Tlist”,但就是不出現函數列表,源文件所在的目錄也沒有中文字符~

    Reply

發表評論