VIM+ctags+omnicppcomplete
VIM+ctags+omnicppcomplete
我是linux新手,但我最终决定尝试一个,我最近安装了openSUSE。在windows 7上,我使用Visual Studio进行c/c++编程。我试图在linux下找到任何IDE,尝试KDevelop但不喜欢它,所以我决定尝试设置VIM作为我的源代码编辑器。
首先,我需要找到一些自动完成。我读了一些关于GCCSense和clang_complete的东西,但现在安装这些东西对我来说有点复杂,所以我决定使用omnicpp和tags。
我下载了omnicpp并把这些文件放在~/目录下。vim文件夹中,我安装了标签。我的.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 .),但是没有生成这样的文件。我做错了什么?
Edit:
默认情况下,vim和gvim都不会为您更改当前目录。因此,命令将在环境的当前工作目录中执行。简而言之,如果您运行:
cd / && vi ~/prog/c/file.c
你在使用vi时会遇到与在gvim中相同的"问题"。这就是我在注释中展示的绑定中使用绝对路径的原因。使用autochdir是一个合理的解决方案,如果这是您所期望的行为。
原始:问题似乎是+
字符。我建议把你的标签参数放入~/.ctags
:
$ echo -e "--c++-kinds=+pn--fields=+iaSn--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>
Omni:
有人看过或参考过这个吗?
https://llvm.org/svn/llvm-project/llvm/trunk/utils/vim/vimrc标记:
从髋关节(读取:未经测试和未经验证)尝试CD' s到当前目录。
map <F8> :cd %:p:h <Bar> :!/usr/bin/ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
好的,谢谢你的回答,我找到问题的根源了。当我从终端F8运行VIM时工作正常,当我输入!pwd时,它显示我的。C文件所在的目录(例如~/prog/C),但是当我使用GvIM并打开相同的。C文件并键入!pwd时,它显示~/文档,所以我认为问题在于VIM/GvIM中的某个地方。我想知道为什么GVIM不识别文件夹,无论我打开什么文件?
——编辑我添加了设置autochdir到我的。vimrc,现在一切都很好,问题解决了,但我会很感激,如果有人能回答我,为什么一切都在工作,当我从终端运行VIM(即使当autochdir被关闭),但它不工作的GVIM。
- 无法去函数实现 vim
- 如何将默认代码添加到我在 vim 中打开的每个 cpp 文件?
- 在 vim 中C++文件中的输入
- 如何在 vim (windows) 中编译和运行 c++ 代码
- 如何在vim中导航c++模板实例化
- vim使用户定义类型的COLOR与C++中的基本类型相同
- 如何使用 vim 将文字"n"替换为文字"\n"?
- vim,自动格式,代码二氧化碳,C
- Vim 合成显示警告并设置警告级别
- vim 标签导航,使用 VIM 或 CTAG 更改排序顺序
- 用于使用可选输入文件运行 C++ 的 VIM 映射
- VIM:执行复杂文件类型的脚本和显示结果
- 我可以只从带有 Ctags 的C++文件中获取 #includes 吗?
- 如何在 vim 的配色方案中更改运算符 (+- * / < >) 的颜色
- Vim 如何"take control"终端并允许将其用作可修改的缓冲区?
- Vim :用带参数的命令覆盖 equalprg
- 让 vim 的 YouCompleteMe 插件识别旺盛的 ctags
- Vim Ctags如何自动完成函数参数
- c++、cscope、ctags和vim:查找从这个继承的类
- VIM+ctags+omnicppcomplete