Skip to content

Latest commit

 

History

History
261 lines (164 loc) · 10.7 KB

my_vimrc.rst

File metadata and controls

261 lines (164 loc) · 10.7 KB

我的vim配置

虽然在 install_vim 中可以通过自定义编译以及插件安装方式,打造一个功能强大的IDE。不过,步骤相对繁琐。所以,我以 Ultimate vimrc 为基础,重新构建一个精简的vim开发环境:

  • Ultimate vimrc 在GitHUB上拥有 26.8k 的Star,足以见得该项目的成功;并且还在不断改进
  • Ultimate vimrc awesome version 提供了精简但同时具备插件扩展,可以方便自己定制

Ultimate vimrc安装

建议安装Awesome版本,包含了大量强大插件,并且非常容易扩展:

my_vimrc/install_ultimate_vimrc.sh

是的,安装步骤就是这么简单...

升级

要升级 vimrc 执行以下命令(git rebase):

my_vimrc/update_ultimate_vimrc.sh

jedi-vim

Ultimate vimrc 使用了 GitHub:jedi-vim 来实现vim的 Python autocompletion,依赖于 python-jedi 。在 arch_linux 和 `strike`:macOS ( macos 系统自带vim不支持python也会报这个错误,但是 pip install jedi 不能解决这个问题,需要使用 homebrew 安装内置支持Python3的vim ) 上默认可能没有安装,此时使用 vim 编辑文件会提示错误:

Error detected while processing BufRead Autocommands for "*.rst"..FileType Autocommands for "*"..Syntax Autocommands for "*"..function <SNR>14_SynSet[25]..script /usr/share/vim/vim90/syntax/rst.vim[230]../h
ome/huatai/.vim_runtime/sources_non_forked/jedi-vim/after/syntax/python.vim[1]../home/huatai/.vim_runtime/sources_non_forked/jedi-vim/autoload/jedi.vim[260]..function jedi#init_python[13]..BufRead Autocomma
nds for "*.rst"..FileType Autocommands for "*"..Syntax Autocommands for "*"..function <SNR>14_SynSet[25]..script /usr/share/vim/vim90/syntax/rst.vim[230]../home/huatai/.vim_runtime/sources_non_forked/jedi-v
im/after/syntax/python.vim[1]../home/huatai/.vim_runtime/sources_non_forked/jedi-vim/autoload/jedi.vim[260]..function jedi#init_python[11]..<SNR>156_display_exception:
line   19:
Error: jedi-vim failed to initialize Python: jedi#setup_python_imports: ModuleNotFoundError: No module named 'jedi' (in BufRead Autocommands for "*.rst"..FileType Autocommands for "*"..Syntax Autocommands f
or "*"..function <SNR>14_SynSet[25]..script /usr/share/vim/vim90/syntax/rst.vim[230]../home/huatai/.vim_runtime/sources_non_forked/jedi-vim/after/syntax/python.vim[1]../home/huatai/.vim_runtime/sources_non_
forked/jedi-vim/autoload/jedi.vim[260]..function jedi#init_python[4]..<SNR>156_init_python[6]..jedi#setup_python_imports, line 20). See :messages and/or :JediDebugInfo for more information.

验证可以在 python 中执行 import jedi 会提示错误:

>>> import jedi
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'jedi'

arch_linux 解决方法很简单,就是安装 python-jedi :

pacman -S python-jedi

也可以通过 pip 安装,例如在 macos 上,现在默认是python3/pip3,则执行以下命令安装:

sudo pip3 install jedi

然后就可以正常使用

Ultimate vimrc配置

安装完成后,打开 ~/.vimrc 就会看出 Ultimate vimrc 巧妙之处:

my_vimrc/vimrc

Ultimate vimrc 将默认配置文件划分为4类,对应4个标准默认配置文件;同时提供个用户一个自定义配置文件 ~/.vim_runtime/my_configs.vim 让用户进行定制。我们的所有配置定制都应该在这个文件进行,避免项目原更新后本地配置被覆盖或冲突。

初步定制

relative行号

我觉得 relative linue number 可能是最值得启用的功能:

  • 以往需要复制多行数据,往往需要肉眼计算需要 yy 多少行,繁琐而容易出错
  • vim提供了自动现实相对行号的功能: 以当前光标行为基础,动态显示上下行的相对行差,这样就非常容易知道需要复制多少行能够覆盖需要复制的内容

启用命令:

:set relativenumber
:set rnu

关闭命令:

:set norelativenumber
:set nornu

不过,此时当前行一直显示是 0 不是很直观。没关系,从 vim 7.4 开始可以同时启用当前行号和相对行号:

:set number relativenumber
:set nu rnu
  • ~/.vim_runtime/my_configs.vim 中添加以下行启用上述功能:

    set nu rnu

字体色彩定制

Ultimate vimrc 内置了多种 color schemes ,默认是 peaksea 。但是这个默认字体色彩比较暗淡(素雅),阅读代码色彩对不不太强烈清晰,所以我修订为 dracula (暗黑模式尤其出彩)。

  • ~/.vim_runtime/my_configs.vim 中添加以下行启用暗黑模式 dracula 色彩模式:

    set background=dark
    colorscheme dracula

完整 my_configs.vim

  • 最终完成 ~/.vim_runtime/my_configs.vim :

my_vimrc/my_configs.vim

Note

  • vim_auto_indent
  • vim_fold

插件安装

常规插件安装

Ultimate vimrc 使用 tpope / vim-pathogen 管理插件。 vim-pathogen 包装了著名的 Vundle.vim GitHub ,提供自动插件安装

  • 只需要将插件的github项目clone到 ~/.vim_runtime 目录下,例如 XXX_plugin :

    cd ~/.vim_runtime/my_plugins
    git clone https://github.com/xxx/XXX_plugin.git
  • 然后打开vim应用, Ultimate vimrc 会自动完成插件安装

YouCompleteMe插件

  • 需要注意,默认 kali_linux 安装的是 vim.basic :

    $ ls -lh /etc/alternatives/vim            
    lrwxrwxrwx 1 root root 18 Feb 10 04:06 /etc/alternatives/vim -> /usr/bin/vim.basic

这个基础版本vim没有内建支持Python:

YouCompleteMe unavailable: requires Vim compiled with Python (3.6.0+) support.

那么要如何安装一个内置支持python的vim呢?

Note

redhat_linux 系列中,使用 fedora ,则安装 vim-enhanced 软件包:

sudo dnf install vim-enhanced

安装完成后检查 /etc/alternative/vim 可以看到原先软链接到 /usr/bin/vim.basic 被修订成 /usr/bin/vim.nox :

$ ls -lh /etc/alternatives/vim
lrwxrwxrwx 1 root root 16 Apr 26 07:24 /etc/alternatives/vim -> /usr/bin/vim.nox
  • 完整安装依赖(包括支持python的vim版本,以及cmake等):

my_vimrc/vimrc_ubuntu_dep_dev

my_vimrc/vimrc_fedora_dep_dev

Note

对于 fedora 需要安装 python3-devel ,不过默认可能已经安装

安装自己需要的开发软件

  • 安装 rust :

../../../../rust/rust_startup/install_rust.sh

  • 安装 golang / nodejs (支持TypeScript)

my_vimrc/vimrc_ubuntu_go_nodejs

my_vimrc/vimrc_fedora_go_nodejs

  • 进入YouCompleteMe目录:

my_vimrc/vimrc_prepare_ycm

由于 golang.org 网站被GFW屏蔽,所以会导致编译时无法获取go模块,需要 go_proxy :

../../../../golang/go_proxy/alias_go_proxy.sh

由于 npm 需要访问 npmjs.com 已经被GFW屏蔽( npm.org 没有屏蔽,但是重定向到 npmjs.com ),所以也要 npm_proxy :

../../../../nodejs/startup/npm_proxy/alias_npm_proxy.sh

配置 git 代理:

../../../../devops/git/git_proxy/git_config_http.proxy

由于 YouCompleteMe 编译需要从github下载 clangd 源代码tar包,所以还需要配置 fedora_proxy

按需编译YouCompleteMe:

my_vimrc/compile_youcompleteme.sh

如果出现编译错误,可以按照提示采用debug模式来观察哪里出现错误:

/usr/bin/python3 /home/huatai/.vim_runtime/my_plugins/YouCompleteMe/third_party/ycmd/build.py --clangd-completer --go-completer --ts-completer --rust-completer --verbose

使用YouCompleteMe

编译安装 YouCompleteMe 之后,使用 vim 打开任何支持开发语言的项目,都会自动创建索引并支持代码自动完成功能。这对提高开发效率非常有帮助,几乎就是IDE的完备功能。不过需要注意,类似 golang 项目构建索引需要访问Internet上的golang网站,如果被GFW屏蔽,会导致 vim 长时间停滞在 loading packages 状态而导致代码自动完成功能失效。

所以,务必确保 go_proxy 配置正确,即上述采用 alias 来保证 go 能够安装模块。

参考