这篇文章主要讲的是vim的简单配置,相对于vim内置的一些快捷键和功能,==vim的客制化==才是vim的灵魂,也是vim存活31年仍被热衷的原因。
如果你还不了解vim的基本操作和体系,我建议你看一下我上一篇文章:
vim配置全攻略(1) —— vim的基本操作
还是建议大家积极评论,如果有什么地方有误,也希望大家斧正。
vim & neovim
在配置vim之前我想说一下vim
和neovim
,相信大多数知道vim的小伙伴都听说或使用过neovim,那今天我就发表一下我对vim和neovim的简介,以及我的选择。
首先无论是vim还是neovim都是一款非常不错的编辑器,他们两款编辑器都有优点,不能说哪个好哪个不好,只能说每个人的需求不同罢了。
如果你经常写C的话,那么vim是你一个不错的选择,因为ta的体系和功能更加完备,用户体系更加庞大;如果你是java架构师或者经常写java程序的话,那么neovim可能对你更加友好(不过我还是建议写java的小伙伴使用IDEA,再不济vscode也是一个不错的选择)。
如今,neovim的出现以及展现出的生机,已经威胁到了vim,使vim的更新又相对频繁起来,我觉得vim成为一个被动的追赶者,去模仿neovim的一些功能,己经证明了ta的"廉颇老矣"。
这个结论不是绝对的,我也不否认vim的强大和neovim的激进。
我现在用的是neovim,因为ta更加迅速,现代化,我的体验更好。
vim的配置
配置文件
首先,我们想要配置vim和neovim,其原理就是在vim和neovim的配置文件中,写如vim支持的相关语法,从而达到想要的效果。
vim和neovim的配置文件位置各不相同:
- vim:
~/.vimrc
- neovim:
~/.config/nvim/init.vim
这是就是vim和neovim配置文件的位置,当然这里声明一下neovim的配置文件也可以是init.lua
,但是lua的配置难度更大,需要对neovim有一定了解,所以这里就以.vim
为例。
这里补充一下在你安装完neovim之后,你会发现是没有~/.config/nvim
这个文件夹的,所以需要你自己创建:
# vim
vim ~/.vimrc
# neovim
mkdir ~/.config/nvim
nvim ~/.config/nvim/init.vim
配置
首先在你打开vim或者neovim之后,你会发现ta们类似windows上的记事本,没有什么特殊之处,很难想象这就是大名鼎鼎的编辑器之神。
行号
代码编辑器和文本编辑器之间最明显的区别就是行号,ta可以帮助我们在报错之后快速的寻找Bug和跳转。在vim和neovim中设置行号的方式有两种:
临时行号
顾名思义,临时行号就是‘一次性’
的行号,仅仅只能显示一次,启动方法也很简单,只需要在命令模式中输入set number
即可,之后你会发现出现了行号。
永久行号
如果想永久设置行号,只需在配置文件输入set number
即可。
这里补充一下,在上一篇文章中,我曾说过可以通过*hjkl
来进行快速移动,然而在对于一些较远的行来说并不友好,所以便出现了一种特殊的行号——相对行号,将set number改为 set relativenumber即可。
这样我们想要跳转到哪一行,只需输入其左侧的数字移动即可。
但是这样也有一个弊端,就是我们无法查看行号了,于是我们就可以set number
和set relativenumber
一起使用,这样就可以兼得了。
缩进 & 缩进显示
如果你在使用vim和neovim之后你会发现,ta们的缩进并不标准,所以我们需要调整缩进到我们想要的格数上。
set tabstop=4
set softtabstop=4
set shiftwidth=4
这样你就会发现,缩进变为了4格。
然后你会发现另一个缩进问题:在你写东西的时候ta没有办法自动缩进,需要手动的按下Tab键,这并不是一个大问题,但是非常影响心情。
set noexpandtab
set nu
set autoindent
set cindent
这样设置,之后你就会发现ta可以自动缩进了,至于为什么这么设置,我只能说这就是.vim的语法,想记就记下来,不相记复制粘贴也没关系,毕竟谁也不会天天配置vim。
说完了缩进之后,我没来说缩进显示,缩进显示可以让我们明确的看到缩进的次数,对于我们开发非常友好。
set list
set listchars=tab:\|\,trail:·
这样我们就可一看到缩进了,当然在之后的文章中我会推荐一个缩进显示插件,功能会比这个强大一些。
高亮
对于语法高亮,我们可以轻松地阅读,以及分辨这个单词的类型。
syntax on
这样我们就可以看见语法高亮了。
如果你觉得这个高亮不适合你,我们有两种方式更改高亮颜色:一是设置主题,这个我会放到之后和桌面么美化,一起说;二是highlight设置,如:
highlight Function cterm=bold,underline ctermbg=red ctermfg=green
这样就可以设置颜色了,不过还是建议大家安装主题,应为自己美化是没有尽头的。
编码
与Vim编码有关的变量包括:encoding
、fileencoding
、termencoding
。
encoding
选项用于缓存的文本、寄存器、Vim 脚本文件等;fileencoding
选项是Vim写入文件时采用的编码类型;termencoding
选项表示输出到终端时采用的编码类型。set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 set termencoding=utf-8 set encoding=utf-8
突出显示当前行/列
" 突出显示当前行 set cursorline set cul 'cursorline的缩写形式' # 突出显示当前列 set cursorcolumn set cuc 'cursorcolumn的缩写形式'
启用鼠标
set mouse=a
set selection=exclusive
set selectmode=mouse,key
括号匹配
set showmatch
键盘映射
键盘映射是vim中非常重要的一种配置方式,ta可以将一些你不喜欢的快捷键修改为你舒适的键位。
在上一篇文章,我们说过vim有四种模式,所以键位也有四种表示方法对应四种不同的模式:
- map
- noremap/nmap
- imap
- vmap
- cmap
- unmap
map
与nmap
的效果相似,都是在==正常模式==识别。imap
是在==编辑模式==下的键盘映射。- vmap是==可视模式==下的键盘映射。
- cmap是==命令模式==下的键盘映射。
- unmap则是取消某一个映射。
举个例子,如果我们想要在正常模式下将F10设置为清空全部内容:
nmap :1,$d
在这里我们可以看出设置键盘映射的格式为:
*map <设置的按键> <你在按下按键后执行的操作>
那么以后在我们按下
后,vim就是将
按键转义为:1,$d
;:
会进入命令模式 ,并且在:
后输入1,$d
,
为回车即执行。
也可在命令模式中输入map来查看你设置的键盘映射。
在说完了这些之后今天vim的基本配置就说完了,最后把我的neovim(.vim)文件附在这里,也希望大家提出更好的建议:
我的vim配置文件