这篇文章主要讲的是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 <F10> :1,$d<CR>
在这里我们可以看出设置键盘映射的格式为:
*map <设置的按键> <你在按下按键后执行的操作>
那么以后在我们按下
<F10>
后,vim就是将
<F10>
按键转义为
:1,$d
;
:
会进入
命令模式
,并且在
:
后输入
1,$d
,
<CR>
为回车即执行。
也可在命令模式中输入map来查看你设置的键盘映射。
在说完了这些之后今天vim的基本配置就说完了,最后把我的neovim(.vim)文件附在这里,也希望大家提出更好的建议:
我的vim配置文件