2

我是 linux 新手,但我终于决定尝试一个,我最近安装了 openSUSE。在 Windows 7 上,我使用 Visual Studio 进行 c/c++ 编程。我试图在 linux 下找到任何 IDE,尝试了 KDevelop 但不喜欢它,所以我决定尝试将 VIM 设置为我的源代码编辑器。

首先,我需要找到一些自动完成功能。我读了一些关于 GCCSense 和 clang_complete 的东西,但现在安装这些东西对我来说有点复杂,所以我选择了omnicpp 和 ctags。

我下载了omnicpp并将这些文件放在〜/ .vim文件夹中,我安装了ctags。我的 .vimrc 看起来像这样:

set number

" --- OmniCppComplete ---  
" -- required --  
set nocp " non vi compatible mode
filetype plugin on " enable plugins

" -- optional --
" auto close options when exiting insert mode
autocmd InsertLeave * if pumvisible() == 0|pclose|endif
set completeopt=menu,menuone

" -- configs --
let OmniCpp_MayCompleteDot = 1 " autocomplete with .
let OmniCpp_MayCompleteArrow = 1 " autocomplete with ->
let OmniCpp_MayCompleteScope = 1 " autocomplete with ::
let OmniCpp_SelectFirstItem = 2 " select first item (but don't insert)
let OmniCpp_NamespaceSearch = 2 " search namespaces in this and included files
let OmniCpp_ShowPrototypeInAbbr = 1 " show function prototype (i.e. parameters) in popup window

" -- ctags --
" map F8 to generate ctags for current folder:
map <F8> :!/usr/bin/ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
" add current directory's generated tags file to available tags

set tags=./tags,tags,/home/andrzej/vim/commontags

所以尝试一下,我制作了简单的 .c 文件

struct str
{
    int aaa;
};

int main()
{
    str *wsk;
    wsk->aaa=5;
    return 0;
}

我不在输入模式时按 F8,它应该在找到 .c 文件时生成标记文件(map :!/usr/bin/ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .) 但没有生成这样的文件。我做错了什么?

4

3 回答 3

2

编辑:

默认情况下,vim 和 gvim 都不会为您更改当前目录。因此,命令将在您环境的当前工作目录中执行。简而言之,如果您运行:

cd / && vi ~/prog/c/file.c

您在使用 vi 时会遇到与 gvim 中相同的“问题”。这就是我在评论中显示的绑定中使用绝对路径的原因。如果这是您所期望的行为,那么使用 autochdir 是一个合理的解决方案。

原来的:

问题似乎是+字符。我建议将您的 ctags 参数放入~/.ctags

$ echo -e "--c++-kinds=+p\n--fields=+iaS\n--extras=+q" > ~/.ctags
$ cat ~/.ctags
--c++-kinds=+p
--fields=+iaS
--extra=+q

然后将映射更改为:

map <F8> :!/usr/bin/ctags -R<CR>

否则,您可以转义“+”字符:

map <F8> :!/usr/bin/ctags -R --c\+\+-kinds=\+p --fields=\+iaS --extra=\+q .<CR>
于 2011-08-03T22:55:08.897 回答
0

全向

有人看过或引用过这个吗?

https://llvm.org/svn/llvm-project/llvm/trunk/utils/vim/vimrc

标签

从臀部拍摄(阅读:未经测试和未经验证)尝试CD'ing到当前目录。

map <F8> :cd %:p:h <Bar> :!/usr/bin/ctags -R --c\+\+-kinds=\+p --fields=\+iaS --extra=\+q .<CR>
于 2011-08-04T01:58:32.703 回答
0

好的,感谢您的所有回答,我找到了问题的根源。当我从终端 F8 运行 VIM 时工作正常,当我输入 !pwd 时,它会显示我的 .c 文件所在的目录(例如 ~/prog/C),但是当我使用 GvIM 并打开相同的 .c 文件并输入!pwd 它显示 ~/dokumenty,所以我认为问题出在 VIM/GVIM 的某个地方。我想知道为什么无论我打开什么文件,GVIM 都无法识别该文件夹?

---编辑---我将 set autochdir 添加到我的 .vimrc 中,现在一切正常,问题已解决,但如果有人能回答我,我将不胜感激,为什么当我从终端运行 VIM 时一切正常(即使autochdir 已关闭)但它不适用于 GVIM。

于 2011-08-04T09:38:33.870 回答