vim配置手册

背景

个人vim显示风格,以及一些控制命令的备忘。

系统信息:

  Linux debian9 4.9.0-7-amd64 #1 SMP Debian 4.9.110-1 (2018-07-05) x86_64 GNU/Linux

编译器和vim等辅助程序,都是系统自带的原始版本。

--------------------------------------2019/12/30更新-----------------------------------------------

最初使用VIM时尝试配置插件失败后,就一直没再试过,但今天竟然意外完成。youcomplete + ctags + taglist 已经可以实现IDE的大部分常用功能了,简直不要太爽!

配置文件

"---------------------------------------Display---------------------------------------------------
syntax on
filetype plugin indent on "文件类型检测
set nocompatible "去除vi一致性
set number "行号
set cursorline "当前行下划线
set tabstop=4 "tab键宽度
set shiftwidth=4 "缩进长度
set incsearch "实时搜索
set laststatus=2 "底部状态栏
set scrolloff=5 "光标距底部/顶部行数
set noerrorbells "禁止警告声
set statusline=[%F]%y%r%m%=[Hex:%B,ASCII:%b][Line:%l/%L,Column:%c][%p%%] "状态栏

"----------------------------------------Plugins--------------------------------------------------
"------------------Vundle(plugins manager)---------------------------
set nocompatible
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'Valloric/YouCompleteMe'
Plugin 'taglist.vim'
call vundle#end()
filetype plugin indent on
"------------------YouComplyteMe----------------------
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/.ycm_extra_conf.py'

"------------------tags----------------------

set tags=/home/orejia/ems/lastedcode/design/tags

显示

在xshell的"new black"配色方案下的显示效果如下

插件

Vundle

这里vim插件管理器,其本身也是需要安装的

YouCompleteMe

这是代码提示功能插件,通过vundle来安装

ctags

生成代码索引文件tags源码跳转,同时用于taglist生成变量符号列表

taglist

生成变量、类及函数列表

插件安装

ctags安装

sudo apt-get install ctags

vundle源码下载,其中~/.vim/bundle目录是由vundle来管理的插件的源码目录,它只需要源码然后进行在.vimrc中配置路径就行,不需要额外的安装命令

git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

YouCompleteMe源码下载及安装(YouCompleteMe也可以通过vundle安装,但因为源码太大容易出现下载超时错误)

cd ~/.vim/bundle
git clone https://github.com/Valloric/YouCompleteMe.git
cd YouCompleteMe
git submodule update --init --completer
./install.py --clang-completer

如果编译正常完成,将在~/.vim/bundle/YouCompleteMe/third_party/ycmd/下面生成一个包含c/c++语法的用于语法提示的配置文件.ycm_extra_conf.py

 

taglist安装(通过vundle)

打开vim,执行插件安装命令:PluginInstall,因为vundle和YouCompleteMe已经通过源码完成安装,这里将直接安装taglist,

安装完成后在~/.vim/bundle下生成taglist.vim目录树

 

插件配置

ctags

遍历当前目录树并生成索引文件tags

ctags -R *

在vim配置文件中指定索引文件路径

set tags=/home/orejia/ems/lastedcode/design/tags

YouCompleteMe

在vim配置文件中指定全局配置文件路径

let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/.ycm_extra_conf.py'

除了这个,好像还有很多其他可配置项,暂时不需要了解。

 

针对一些glibc的头文件,默认没有提示,但可以通过修改上面的全局配置文件来实现:

 

 这里的第45,46行是我自行添加的,,可添加多个路径(每添加一个新路径,必须在它前面添加一行声明'-isystem')。

 

语法提示使用说明

  • 语法错误时,在错误代码位置会高亮显示,同时在窗口底部会显示当前光标所在行的错误信息;
  • 编辑代码时,出现代码提示列表,tab键向下选择的同时,光标处的内容自动补全为所选项,接着写后面的代码即可;

插件命令

ctags

指定索引文件名

set tags=/home/orejia/tags

预先在配置文件中指定索引文件,实现在任意路径下打开并且光标定位到指定函数入口处

orejia@debian9:test$ vi -t main      ##打开配置文件中指定的索引文件中的main函数入口

打开某个文件后,跳转到某个标签定义的位置

:ta main    ##跳转到当前打开的文件的main函数入口处

在命令模式下

ctrl + ]      ##跳转到光标所在位置的符号的定义位置
ctrl + t      ##返回

taglist

 

快捷键 说明
<enter> 跳转到光标所在位置tag的定义的位置
<space> 同enter,但是在新建窗口中打开
u 根据源文件的修改,更新tag列表
s 更新排序方式,按名称或位置
x 显示/隐藏文件编辑窗口
+ 展开光标所在位置被折叠的文件
- 收起光标所在位置已经展开的文件
* 展开所有文件
= 收起所有文件
[[ 跳转到与光标最近的上一个文件头
]] 跳转到与光标最近的下一个文件头
q 关闭taglist窗口

 


快捷键是由taglist本身来响应,但有时需要通过vim命令来控制taglist窗口:

VIM命令  说明 备注
TlistClose 关闭窗口 常用
TlistOpen 打开窗口 常用
TlistToggle 打开/关闭窗口 常用
Tlist_Use_Right_Window 是否在右侧显示taglist窗口,默认0在左侧显示  
Tlist_Ctags_Cmd 指定ctags路径,可不指定,默认从PATH获取 不常用
Tilst_Show_One_File 是否显示已打开的多个文件的tag列表,默认0显示多个 不常用
Tlist_Sort_Type ="name"按名称显示,默认按位置显示 不常用
Tlist_Exit_OnlyWindow 最后一个文件退出时,是否退出taglist窗口,默认0不退出 常用
Tlist_Auto_Open 是否自动打开taglist窗口,默认0不打开 常用
Tlist_Close_On_Select 选择tag后,是否自动关闭taglist窗口,默认0不关闭 不常用
Tlist_File_Fold_Auto_Close 打开多个文件时,是否只展开光标所在文件的tag列表并收起其他文件,默认0全部展开 常用
Tlist_GainFocus_On_ToggleOpen 使用TlistToggle命令时,光标是否自动跳转到taglist窗口,默认0不跳转 常用
Tlist_WinHeight taglist窗口高度 不常用
Tlist_WinWidth taglist窗口宽度 常用
Tlist_Process_File_Always 是否解析所有文件的tag,默认0只解析已打开的文件 不常用

 

 

 

补充

快捷键映射

map <silent> <F9> :TlistToggle<cr>

这是只对快捷键的设置方式做个记录,但我觉得不太实用,用原生命令就很方便了。 注意中间的空格,缺少必要的分隔符可能会出错。

控制命令

分屏

命令 说明
ctrl + w + h 光标跳转到左屏
ctrl + w + l(小写的L) 光标跳转到右屏
ctrl  + w + j 光标跳转到下屏
ctrl + w + k 光标跳转到上屏
:sp filename 横屏打开
:vsp filename 竖屏打开
:vert res +n 将竖屏增加n列宽度
:res +n 将横屏高度增加n行

 

参考

youcompleteme编译错误解决:https://www.cnblogs.com/willsonli/p/6559705.html

vim打开文件时提示的youcompleteme无法加载python错误的解决方法:https://www.cnblogs.com/p/11209813.html

posted on 2019-12-28 19:35  sermatec江  阅读(155)  评论(0编辑  收藏  举报