简单的对vim进行改造

2021/12/05

前言

同事在闲鱼淘了一个Magic Keyboard Gen1结果没用几天,escape的按键就坏掉了,但是已经确认收货了…..他舍不得钱浪费还想继续用,就罗列了一下escape的场景,发现最高频的还是在vim中进行模式切换。有这个契机就分享一下我自己在mac下简单对vim的改造,不仅好用而且可以摆脱escape。

简单介绍一下vim,它是一个文本编辑器,其实就和mac上面的文本编辑.app差不多,只不过它的交互哲学是通过键盘完成一切。在这里我不想吹vim,作为javaer而言难道世界上还有比intellij还更香的IDE吗?更别说文本编辑器🤡(逃~)。当然我也见识过真正的vim大神,原来公司有php组,有前辈大部分时候都是直接在服务器上编写代码很少用IDE,摸键盘和弹琴一样,刷刷刷~。

为啥说简单改造呢,因为原来也痴迷过vim,也觉得在vim上写代码看起来好厉害,也曾经折腾过高亮,提示,搜索,跳转非常酷炫,可是真要写jvm代码还是得看intellij,增加学习上手成本并且收益非常低。不过即便没有在服务器上编码的需求,肯定会有修改配置文件场景,所以我更加建议先对vim进行小小的顺手改造,待以后有了服务器编码需求,可以再把相关插件以及自定义键位加上

配置和插件

提一嘴,mac是自带vim,网上有大佬建议使用MacVim替换系统vim。我不建议,一方面是懒,另外一方面MacVim除了内部继承vim优化最大的特点就是自带GUI,但是vim本来就是强调丢弃鼠标,感觉和理念有点违背,更别说现在2021年了MacVim对shell的支持还是很不到位,如果你和我一样是这是简单的CLI需求,我也建议你别换

另外从Mojave(10.14.x开始,MacOS内置的vim版本已经是8.x了,你要的需求自带的vim都可以满足。

修改配置方法

Mac自带vim的默认配置文件在/usr/share/vim/vimrc。这个文件是系统级(全局)的vimrc配置文件,为了保证vim的正常运行,一般并不会修改这个文件。而是在~目录下创建一个新的用户级vimrc文件。在终端中键入touch ~/.vimrc 手动创建一个配置文件(放心vim会自动读取这个文件),值得注意的是,我这里创建的是隐藏文件,而全局配置文件是正常的非隐藏文件,隐藏和不隐藏都可以,看个人习惯(.xxx隐藏,xxx非隐藏)

image-20211205115527667

保证home目录下面有.vimrc文件


然后如果需要对vim做内置配置修改或者自定义键位配置都往这里面加修好了,不用重启就可以生效。

安装插件的方法

vim安装插件的话,你可以直接按照vim官网的指南进行手动安装。但是我更加建议使用包管理器,后期更新都很方便,这里推荐vim-plug。如果你可能会看别人推荐vundle,但是它已经不再更新了,vim-plug不仅承诺会一直更新并且它提供非常翔实的文档

安装也非常简单,它github上有各个版本的安装指南,如果是unix(mac和linux都是)直接在shell里面输入

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

即可,如果输入后一直卡进度条,可以看看我这篇文章的终端代理或者在它官网下载.vim脚本然后手动把脚本放到~/.vim/autoload/下(如果没有则自己创建一下就好了)

image-20211205120206489

安装成功界面(其实这个curl也很简单就是把脚本放到指定你本地路径)


安装好了以后你需要一个插件市场然后找到对应的包名,有点像maven的坐标,vim-plug就是maven帮你管理各种依赖,maven远程中央仓库就是插件市场。除非你能把坐标背下来不然你需要去中央仓库获取坐标然后写到maven的pom文件中。在vim的插件中你需要去插件市场找到对应的命令然后写到.vimrc中,使用命令再安装(相当于。

我使用的插件市场vimawesome,插件非常全,并且不只是支持vim-pulg还支持市面上其他的包管理器

image-20211205121905833

vimawesome页面上提供的某插件命令


你有了vim-plug以及收藏了vimawesome,安装插件按照vim-plug文档上的描述操作就好了。当然下面也会分享一些插件告诉大家怎么装。

推荐修改配置

开启高亮

mac默认的vim配置是没有高亮的,我可以看不懂代码,但是代码不能不高亮。我随便编辑一个startup文件,里面有一些默认的配置和自定义配置看一下有高亮和没高亮的对比。

2021-12-05 15.47.41

没有高亮

2021-12-05 15.50.31

有高亮


这个对比我相信不用我多说,我每次看组里面写安卓的同学满屏的花花绿绿就觉得好厉害,代码颜色越多应该技术越好吧🤡

开启高亮非常简单只需要在shell里面输入vim ~/.vimrc,然后里面添加syntax on,然后:wq保存即可,然后你再去vim看看你的代码,是不是有高亮了呢。

image-20211205160300407

简单输入一行

突出显示行

只需要在shell里面输入vim ~/.vimrc,然后里面添加set cursorline

image-20211205161016943

配置按照行分割


然后就可以获取下面的效果,光标停留在的这一行可以进行下划线的回显,在修改配置的非常好用,尤其是使用/来进行查找经常要眼睛到处瞟一瞟才能知道现在定位到哪里了

image-20211205160949758

定位效果

缩进一致

我的vim大部分都是修改服务器上面的配置,有时候修改之前会做注释之类的,我第一行的缩进了,第二行换下来的时候不会自动保持缩进,还需要手动敲。在.vimrc中添加set autoindent可以下一行的缩进自动跟上一行的缩进保持一致。

image-20211205162222121

记得一个配置一行

2021-12-05 16.37.48

效果就是你换行会保持上一行的缩进

替换escape按键

escape用的比较多的通常是从编辑模式退回到浏览模式,escape比较远但是用的比较舒服的核心键位都被占用了,我的解决办法是使用组合键,快速敲击j+k相当于代替escape。

修改方法也很简单,在~/.vimrc里面添加imap jk <Esc>就好了,jk可以换成你想要的其他按键,只不过我习惯jk。

最终效果如下,在里面写内容的时候使用jk组合键就可以快速切回到预览模式

2021-12-05 16.48.34

替换按键

必须要使用shift+;才可以激活,作为懒癌来说实在是不想按两个键,但是从预览模式进入命令模式又是每次和vim交互都需要做的操作。仔细思考发现在预览模式下,空格键其实是浪费的,因为预览模式下面的编辑都是依赖字母键没有占用空格键键。所以我把空格键设置成用来进入命令模式。设置也非常简单在~/.vimrc里面添加nmap <space> :就好了。

效果如下

2021-12-05 16.48.34

其他

其实大家可以按照自己的习惯去设置,键位映射来说,使用xmap就可以完成。其中x是动态的值,不同的x对应不同的功能,具体给大家做了一个表,大家可以发挥想象去自定义映射

x 含义
nore 非递归
n 普通模式生效
v 可视模式生效
i 插入模式生效
c 命令行模式生效
un 后面跟组合键, 表示删除这个映射
clear 清楚相关模式下所有映射

其他的配置的话,这里也给大家总结了一下

# 自动语法高亮
syntax on 
# 开启插件
filetype plugin indent on 
# 关闭 vi 兼容模式
set nocompatible
# 显示行号
set number 
# 突出显示当前行
set cursorline  
# 打开状态栏标尺
set ruler  
# 设定 << 和 >> 命令移动时的宽度为 4
set shiftwidth=4 
# 使得按退格键时可以一次删掉 4 个空格
set softtabstop=4 
# 设定 tab 长度为 4
set tabstop=4 
# 覆盖文件时不备份
set nobackup 
# 自动切换当前目录为当前文件所在的目录
set autochdir 
# 设置备份时的行为为覆盖
set backupcopy=yes 
# 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感
set ignorecase smartcase 
# 禁止在搜索到文件两端时重新搜索
set nowrapscan 
# 输入搜索内容时就显示搜索结果
set incsearch 
# 搜索时高亮显示被找到的文本
set hlsearch 
# 关闭错误信息响铃
set noerrorbells 
# 关闭使用可视响铃代替呼叫
set novisualbell 
# 置空错误铃声的终端代码
set t_vb= 
# 插入括号时,短暂地跳转到匹配的对应括号
set showmatch 
# 短暂跳转到匹配括号的时间
set matchtime=2 
# 设置魔术
set magic 
# 允许在有未保存的修改时切换缓冲区,此时的修改由 vim 负责保存
set hidden 
# 隐藏工具栏
set guioptions-=T 
# 隐藏菜单栏
set guioptions-=m 
# 开启新行时使用智能自动缩进
set smartindent 
# 不设定在插入状态无法用退格键和 Delete 键删除回车符
set backspace=indent,eol,start
# 设定命令行的行数为 1
set cmdheight=1 
# 显示状态栏 (默认值为 1, 无法显示状态栏)
set laststatus=2 
# 设置在状态行显示的信息
set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\ 
# 开始折叠
set foldenable 
# 设置语法折叠
set foldmethod=syntax 
# 设置折叠区域的宽度
set foldcolumn=0 
# 设置折叠层数为1
set local foldlevel=1 

推荐插件

这里只推荐一个插件,主要是演示怎么使用vim-plug来安装插件,大家可以去vimawesome自己淘插件,找到以后记得评论区分享哦。

我推荐的插件是The NERD tree,它的作用是可以显示和IDE最基本的文件结构树,比如下面的Vscode

image-20211205174946690

vscode的目录树


然后使用The NERD tree以后,在vim里面看是这样的

image-20211205175029546

The NERD tree的界面


具体的安装方法如下

  • 去插件中心-vimawesome找到The NERD tree

  • 复制这一行命令

image-20211205175144192

  • 然后打开shell输入vim ~/.vimrc,对!!!又是这个配置文件,然后在里面输入
call plug#begin('~/.vim/autoload')
call plug#end()
  • 然后把刚刚在vimawesome查到的命令,复制到这两者直接,变成这样
call plug#begin('~/.vim/autoload')
Plug 'scrooloose/nerdtree'
call plug#end()

image-20211205175551695

  • 然后切换到命令模式,输入PlugInstall(注意必须装vim-plug,不然提示找不到命令)

image-20211205175831177

image-20211205175847764

  • 然后你可以在vim下按ctrl+t查看当前文件的所在的目录树,详细的文档vimawesome的该插件详情介绍的会比我详细很多。


至此,插件就装好啦,如果有其他的插件需求安装,与上面的步骤一直,把在vimawesome找到的命令复制到两个call里面,然后在PlugInstall就好了。

END

推荐资料

  1. 蓝桥云课的基础vim
  2. vim冒险小游戏
  3. vim-plug
  4. vim官网的手动插件指南
  5. 推荐的插件仓库-vimawesome
  6. 阮一峰老师vim配置入门

(转载本站文章请注明作者和出处 没有气的汽水



┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐
├ 文章已经完啦, 想要第一时间收到文章更新可以关注↓ ┤
└┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┘

Post Directory






下面是评论区,欢迎大家留言探讨或者指出错误哈