我是linux新手,但我最终决定尝试一下,我最近安装了openSUSE。在windows7上,我使用Visual Studio进行c/c++编程。我试图在linux下找到任何集成开发环境,尝试了KDevelop,但不喜欢它,所以我决定将VIM设置为我的源代码编辑器。
首先,我需要找到一些自动补全。我读了一些关于GCCSense和clang_complete的东西,但是现在安装这些东西对我来说有点复杂,所以我选择了omnicpp和ctag。
我下载了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文件被定位时,它应该会在适当的地方生成标记文件(映射:!/usr/bin/ctags -R --c++-kinds=+p --field=+iaS --extra=+q .)但是不会生成这样的文件。我做错了什么?
发布于 2011-08-04 06:55:09
编辑:
默认情况下,vim和gvim都不会为您更改当前目录。因此,命令将在环境的当前工作目录中执行。简而言之,如果你运行:
cd / && vi ~/prog/c/file.c您在使用vi时会遇到与在gvim中相同的“问题”。这就是为什么我在我的注释中显示的绑定中使用绝对路径的原因。如果这是您所期望的行为,那么使用autochdir是一个合理的解决方案。
原创:
问题似乎出在+字符上。我建议您将ctag参数放入~/.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-04 09:58:33
Omni
有没有人看过或参考过这个?
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-04 17:38:34
好的,谢谢你的回答,我找到了问题的根源。当我从终端运行VIM时,F8工作正常,当我键入!pwd时,它会显示我的.c文件所在的目录(例如.~/prog/C),但是当我使用GvIM打开相同的.c文件并输入!pwd时,它显示了~/dokumenty,所以我认为问题出在VIM/GVIM中的某个地方。我想知道为什么无论我打开什么文件,GVIM都不能识别文件夹?
-编辑-我添加了set autochdir到我的.vimrc,现在一切正常,问题解决了,但如果有人能回答我,我会很感激,为什么当我从终端运行VIM时一切都正常(即使autochdir关闭了),但它对GVIM不起作用。
https://stackoverflow.com/questions/6934031
复制相似问题