首页 生活常识

vim 配置步骤(程序员如何定制自己的Vim?)

日期:2024-04-30 12:41:08   编辑:异步社区 

很多程序员都会使用Vim辅助编程工作,这个实用的小工具其实还有很多妙用,今天异步君就给大家分享Vim中的定制方法,希望能让大家在“无聊”的宅家生活变得充实一些。


定制自己的Vim


Vim用户界面是可扩展的,读者可以改变Vim的主题,修改某些界面元素的显示方式,并且增强状态栏中的信息显示。此外,gVim还有更多其他可定制选项。

配色

_Vim中可以使用多种配色,一部分是Vim自带的,一部分则由社区成员提供。读者可以通过在.vimrc中设置colorscheme来设置配色,如下所示。:colorscheme elflord
通过执行:colorscheme Ctrl + d命令,可以看到当前安装的配色列表(这里的Ctrl + d表示快捷键),如图所示。

上面的例子中,使用的是:colorscheme PaperColor,它来自于GitHub仓库
NLKNguyen/papercolor-theme。

读者可以进一步定制配色,修改其背景色,即将background选项设置为light或dark(必须在设置colorscheme之前完成)。

比如,下图为暗色调版本,即set background=dark配合PaperColor配色。

浏览配色

网上有很多Vim配色,以迎合不同的用户需求。不过,目前并没有一个权威的配色资源。读者需要自行搜索,寻找适合自己审美的配色。

如果读者已经有很多配色方案,则可以使用插件ScrollColors来帮助自己从中找出最喜欢的样式。ScrollColors插件有一个:SCROLL命令,可以供用户交互式地浏览不同的配色。

如果使用vim-plug管理插件,则安装ScrollColors的方法为在.vimrc中添加Plug 'vim-scripts/ScrollColors'代码,然后运行:w | source $MYVIMRC | PlugInstall命令。

在GitHub仓库flazz/vim-colorschemes中也有大量的Vim配色,其中包括数百个受用户欢迎的配色,这应该是一个不错的资源。

vim-colorschemes插件和ScrollColors可以配合使用,方便用户浏览流行的配色方案。

vim-colorschemes可通过vim-plug安装,安装方法为在.vimrc中添加Plug 'flazz/vim-colorschemes'代码,然后运行:w | source $MYVIMRC | PlugInstall命令。

常见问题

有时候,读者会发现自己正在试用的配色并没有示例图片看起来那么漂亮,而且颜色数目好像也不够多。

最可能的原因是终端模拟器错误地告诉Vim它只支持8种颜色,而现代终端模拟器普遍支持256种颜色。为解决这个问题,读者需要正确地设置$TERM环境变量。

这种情况极有可能发生在Tmux和GNU Screen中,因为它们错误地汇报了颜色数目。

如果读者觉得256种颜色还不够用,某些终端还支持24位颜色,通常称为真彩色。如果读者的终端支持24位真彩色(网上搜索确认一下),可在~/.vimrc中添加set termguicolors。

为查看环境变量$TERM当前的值,可运行如下命令。

$ echo $TERM

如果使用Tmux,则在.tmux.conf中添加如下设置。

set****-g****default-terminal "xterm-256color"

如果使用GNU Screen,则在.screenrc中添加如下设置。

term****"xterm-256color"

如果上述方法还不奏效,则在.bashrc中添加如下设置。

TERM=xterm-256color

不过在.bashrc中修改$TERM绝不是什么好主意。读者可以自行研究擅自修改$TERM会有什么后果。


状态栏

_状态栏是屏幕底部用于显示信息的一个区域。通过下列简单的设置,可以使状态栏更加符合用户要求。" 总显示状态栏(默认情况下,有时会隐藏)
set laststatus=2

" 在状态栏中显示最后执行的命令
set showcmd

如果读者想深度定制状态栏,则可以使用插件。这里介绍两款插件(Powerline和Airline),其中Powerline是强大的“全家桶”,而Airline则更为轻量级。

Powerline

Powerline为Vim提供了增强版的状态栏,而且还有其他功能,比如扩展Shell命令提示符或Tmux状态栏。此插件的GitHub仓库为powerline/powerline,在Vim中安装成功之后,Vim的状态栏如图所示。

可以看到,Powerline提供的状态栏中包含了大量的信息,包括当前模式、Git分支、当前文件状态、文件类型、编码,以及光标所在的位置。这个状态栏是可定制的,需要显示多少信息可由读者自行决定。

不过,这个插件的安装有些麻烦,因为它不仅仅是一个Vim插件。首先,需要通过pip安装Python包powerline-status。

$ python3 -m pip install powerline-status

如果系统中没有安装pip,请参见本章开头介绍的安装方法。

然后,还需要确保$HOME/.local/bin目录在系统PATH路径列表中,即在.bashrc中添加以下代码。

PATH=$HOME/.local/bin:$PATH

最后,将laststatus设置为2(确保状态栏不会隐藏),并在~/.vimrc中加载Powerline。

" 总显示状态栏(默认情况下,有时会隐藏)
set laststatus=2

" 加载Powerline
python3 from powerline.vim import setup as powerline_setup
python3 powerline_setup()
python3 del powerline_setup

重载Vim配置文件(:w | source $MYVIMRC),就可以看到屏幕底部的状态栏了,如图所示。

Airline

如果读者不需要过多的功能,也不希望Python程序一直在后台运行,那么Airline是更好的选择。

Airline提供了一个同样漂亮,并且信息足够丰富的状态栏,如图7.5所示。

Airline的GitHub仓库为vim-airline/vim-airline,它不需要任何依赖项。

可以使用vim-plug安装Airline,安装方法为在.vimrc中添加代码Plug 'vim-airline/vim-airline',然后运行:w | source $MYVIMRC | PlugInstall命令。


gVim相关的配置

_gVim是一个独立的应用程序,相比于开箱即用的标准版Vim,gVim提供了更多的可配置选项。事实上,除.vimrc之外,gVim还有一个专用的配置文件.gVimrc。配置gVim图形用户界面的主要选项是guioptions。这个选项是一个字符串,通过多个字母可分别表示不同的设置,包括如下几个选项。

● a和P表示将可视模式下的文本选择自动复制(yank)到系统剪贴板中(参见第2章中关于*和+寄存器的介绍)。

● c表示使用控制台对话框,而不是弹出窗口。

● e表示用图形用户界面组件来显示制表符。

● m表示显示一个菜单栏。

● T表示包含一个工具栏。

● r、l、b分别表示右侧(r)、左侧(l)和底部(b)滚动条总是显示。


如果读者希望显示一个菜单栏和一个工具栏,并且总是显示底部的滚动条,则可以在.vimrc中添加如下代码。" GUI设置,显示菜单栏和工具栏,总显示底部滚动条
set guioptions=mTb
设置生效之后,界面如图所示(这里是Windows系统中的gVim)。


使用Vim的时间越长,就会发现配置文件的改动也越来越频繁。以至于.vimrc文件最后变成了也许用不到的别名、函数和插件,用户再也无法思考真正的需求。因此,定期查看.vimrc,并清理掉多余的函数、插件以及快捷键绑定是一件有必要的事。如果不清楚一个配置项的目的,最好将它删除。

优化工作流程

_每个人的工作流程都是独一无二的,没有两个人能同时走出一条完全相同的Vim轨迹。可以想办法填补读者的Vim使用风格的缺陷,并改善自己使用Vim的工作方式。读者有没有发现自己频繁重复使用同一个命令?定制一个快捷键是不是更好呢?比如,读者经常使用CtrlP插件(用于浏览文件树和缓冲区列表),那么可以使用如下快捷键绑定。nnoremap <leader>p :CtrlP <cr>
nnoremap <leader>t :CtrlPTag <cr>
再比如,读者经常对光标处的单词使用Ack命令(由ack-vim插件提供),那么可以在.vimrc中加入如下设置。nnoremap <leader>a :Ack! <c-r><c-w><cr>
其中,<c-r>和<c-w>将光标处的单词插入命令行中,这个功能可以和:grep结合起来。
nnoremap <leader>g :grep <c-r><c-w> */**<cr>
有些读者经常将分号当成引号(进入命令行模式时),那么只需要重新映射一下快捷键就可以解决这个问题。
nnoremap ; :
vnoremap ; :
总之,只要是重复执行的命令和操作,都可以通过定制一个快捷键来提高效率。


整理.vimrc

如果经常使用和定制Vim,则.vimrc文件会很快变得庞大,这时令.vimrc更易于浏览就显得非常有必要。建议读者经常整理.vimrc。
注释是必要的,不然会忘记当初修改的原因。这和写代码是完全一样的,注释可消除日后不得不重新学习的烦恼。
比如,下面的配置文件中每一个配置项前面都有一个注释。

" 在状态栏中显示最后执行的命令
set showcmd

" 高亮显示光标所在的行
set cursorline

" 显示尺度信息 (在右下部位显示行、列和百分位)
set ruler

" 当终端足够宽时,显示行号
if &co > 80
set number
endif

" 单词的软换行
set linebreak

" 较长的文本行的漂亮显示
set display+=lastline

" 总是显示状态栏
set laststatus=2

有些读者习惯将注释和配置项写在同一行,比如下面的配置示例。

set showcmd " 在状态栏中显示最后执行的命令

set cursorline " 高亮显示光标所在的行

set ruler " 显示尺度信息 (在右下部位显示行、列和百分位)

if &co > 80 " 当终端足够宽时,显示行号
set number
endif

set linebreak " 单词的软换行

set display+=lastline " 较长的文本行的漂亮显示

set laststatus=2 " 总是显示状态栏

为每个插件写一个简短的注释是极其有用的,因为当不再需要某些插件时,修改也会非常容易。

Plug 'EinfachToll/DidYouMean' " 文件名建议
Plug 'Lokaltog/vim-easymotion' " 优化移动命令
Plug '
NLKNguyen/papercolor-theme' " 配色

Plug 'ajh17/Spacegray.vim' " 配色
Plug '
altercation/vim-colors-solarized' " 配色

Plug '
christoomey/vim-tmux-navigator' " 优化tmux整合

Plug 'ervandew/supertab' " 更强大的Tab
Plug 'junegunn/goyo.vim' " 集中编辑
Plug 'kien/ctrlp.vim' " 基于模糊搜索的Ctrl+p
Plug 'mileszs/ack.vim' " ack整合
Plug 'scrooloose/nerdtree' " 更美观的Netrw输出
Plug '
squarefrog/tomorrow-night.vim' " 配色

Plug 'tomtom/tcomment_vim' " 注释助手
Plug 'tpope/vim-abolish' " 方便处理单词大小写等情况
Plug 'tpope/vim-repeat' " 任意重复
Plug 'tpope/vim-surround' " 在命令行中快速移动
Plug 'tpope/vim-unimpaired' " 快捷键的配对使用
Plug 'tpope/vim-vinegar' " 用-打开Netrw
Plug 'vim-scripts/Gundo' " 可视化撤销树
Plug 'vim-scripts/vimwiki' " 个人维基百科

使配置文件方便浏览的方式有很多。一种推荐的方式是使用基于标记的折叠。比如,读者可以将配置文件分为4类:外观、编辑、移动和搜索,然后用手动折叠记号{{{1来标记折叠。

读者还可以使用一些ASCII艺术形式,比如用箭头(=>)和横线(---)使每个章节仿佛拥有一个大标题。

" => 编辑
--------------------------------------------------------- {{{1

syntax on

...

" => 外观
----------------------------------------------------------- {{{1


set background=light
colorscheme PaperColor

通过这种方式,可以更方便地浏览.vimrc。如果想预览.vimrc,只需要用zM关闭所有折叠,如图所示。

定制自己的Vim,可以提高Vim易用性的方法。每个人的需求是不同的,赶紧照着上面的方法,定制属于自己的风格吧。

你感兴趣的

书名:帝王心尖宠她冷心冷情却逃不掉​​大结局今天更新的_帝王心尖宠她冷心冷情却逃不掉​​(萧彻沈晚意)最新章节全文免费阅读_(帝王心尖宠她冷心冷情却逃不掉​​)最新章节列表

帝王心尖宠:她冷心冷情却逃不掉​​是畅销小说家萧彻的作品,它的主角是 萧彻沈晚意 ,这本书艺术感染力强,结尾画龙点睛,本文的内容简要是:直到今日,时间掀掉了三年前的盖头,叫他得见她本人模样。未等二人尴尬多久,只听门外声音愈近,众人皆抬头向外看去。沈晚意下颌抬着,眼却看向青石砖地面,只见几双黑色的长靴出现在眼前,紧接着,一抹粉色略过眼中,竟是一双小小的粉色绣鞋。沈晚意微微一怔,这才抬头,瞬间对

顾知微隋远赵远免费全章节_不如当初莫相逢连载篇阅览

不如当初莫相逢的主角是赵远隋远顾知微,这是一本现代言情风格的小说,是网络畅销大神隋远的作品,这本书简明扼要,重点突出,本文的内容概括是:一周前,我看到顾知微在卡地亚官网查看过这枚戒指。带女儿出国游学的第五天,身为脑外科主任的老婆忽然打来电话。电话接通的瞬间,她怒吼声就传了过来:“隋远,你是不是心理变态?往我白大褂里放安全套,现在全科室都知道了,我脸都被丢尽了。“我握着手机,嘴巴比脑子转的还快

穆深简濛全章节免费阅读 主角我们一定会分手完结版

离别相逢的人会再相逢不要期待重逢该走的人终究要走简濛和穆深在一场单身联谊会上相识,体面的工作、优质的学历、不错的外形,两人一拍即合,美其名曰“一见钟情”。奔着结婚而去的感情,第三次约会便互换了家庭信息,马上显出不合适,两颗心很快就冷了下来。一约定美术馆外的长椅上,简濛欲言又止。穆深不容置疑地说,“手给我”。简濛顺从地照做,自然而然地把头

林晓雅林晓峰主角抖音小说《重生拒签致命婚约,我反手娶了她小姑》在线阅读 林晓雅林晓峰小说大结局无弹窗

01“房产证找到了没?这老东西马上就断气了,赶紧让他按手印!”心脏像被一只生锈的铁手狠狠捏碎。我像一条濒死的鱼,蜷缩在婚房冰冷的地板上。视线已经被生理性的泪水彻底模糊。但我听得清清楚楚。这是我准小舅子,林晓峰的声音。“催什么催!抽屉都锁着呢,我正在撬!”这是我那个平时连大声说话都不会的准岳母,此刻她的声音透着掩饰不住的贪婪与急躁。脚步声

揭秘《旧情难续梦难圆》为何主角陆时年夏棠的故事成为追文热潮的焦点?书迷对他的狂热热爱有何原因?

陆时年夏棠 是《 旧情难续梦难圆 》中的主要角色,由陆时年所创作,作者内容丰富多彩,艺术感染力强,内容非常精彩。《旧情难续梦难圆》小说精彩内容分享:他只加了几个清淡新鲜的素菜。火锅店里人声鼎沸,他们的周围坐着一对年轻情侣,男孩在为女孩消毒碗筷。紧接着,夏棠就看到坐在对面的陆时年拿走了她的碗筷,再拿着茶壶笨拙地倒水清洗起来。她有些震惊。陆时年好似被烫到了,红着指尖把碗筷递给她。夏棠欲言又止,最

《等待春天的知更鸟》阿颜齐远山小说精彩章节免费试读

2这一晚齐远山没有回来,而我盯着棚顶整整一夜。手机推送了一条新闻,我妈和她的继子站在领奖台上,看起来像是真正的母子。我打给妈妈,声音带着哭腔。“妈,他出轨了。”我妈沉默了一会,语气轻飘飘的。“远山照顾你这么多年,已经很不错了。”“像他那样的男人在外面有几个女人很正常,别小题大做。”

图文推荐

  • 书名:帝王心尖宠她冷心冷情却逃不掉​​大结局今天更新的_帝王心尖宠她冷心冷情却逃不掉​​(萧彻沈晚意)最新章节全文免费阅读_(帝王心尖宠她冷心冷情却逃不掉​​)最新章节列表

  • 顾知微隋远赵远免费全章节_不如当初莫相逢连载篇阅览

  • 穆深简濛全章节免费阅读 主角我们一定会分手完结版

  • 林晓雅林晓峰主角抖音小说《重生拒签致命婚约,我反手娶了她小姑》在线阅读 林晓雅林晓峰小说大结局无弹窗

  • 揭秘《旧情难续梦难圆》为何主角陆时年夏棠的故事成为追文热潮的焦点?书迷对他的狂热热爱有何原因?

  • 《等待春天的知更鸟》阿颜齐远山小说精彩章节免费试读