背景
个人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
快捷键 | 作用 |
跳转到光标所在位置tag的定义的位置 | |
同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:TlistToggle
这是只对快捷键的设置方式做个记录,但我觉得不太实用,用原生命令就很方便了。 注意中间的空格,缺少必要的分隔符可能会出错。
控制命令
分屏
命令 | 功能 |
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