【进击的Vimmer】vim配置与vimrc文件详解

都知道vim具有高度的可配置性,虽然有大神说过原生的vim可以做插件提供的90%的功能,但是那也是需要一定的境界,不说别的,就vim那出厂界面就会吓走一批强迫症患者了。所以入手vim的话,第一步肯定是要将她配置成我们心中那美好的形态,不然真的下不来手。

首先是下载合适的vim版本,linux下都是可以实现一键安装,倒是windows下可能会下载错,你下载的可能是32位的版本,32位的不支持64位的python,所以建议下载64位的vim

以下是本人vim配置的效果图,说不上多么高大上,至少是适合自己的,需要注意的是这个版本需要有python的支持,如果没有python的话,某些插件可能无法正常使用。

配置完成的vim

是不是迫不及待自己也想拥有一个呢,我们都是坚定的“拿来主义”者,半小时内就可以搞定,只需要以下2个步骤:

1、相关依赖

linux/mac:

sudo apt-get install curl vim exuberant-ctags git ack-grep


sudo pip install pep8 flake8 pyflakes isort yapf

windows:

下载Git 和 Curl,下载安装python3.6

2、复制配置文件

配置文件在Zhu-Jun/.vimrc,如果是linux/mac用户,那么将里面的.vimrc拷贝到~/目录下,如果是windows用户,将_vimrc拷贝到%USERPROFILE%目录下,一般是C:\Users\XXX\(XXX是用户名)。

以上两步之后,打开vim,它会自动加载需要的内容,大概10-5分钟,至此,vim已经配置完成,windows下如果报缺少lua53.dll,需要下载一个放到vim的安装目录下。

下面介绍一下vimrc文件的一些比较重要的内容。

基本设置

set nocompatible                        " 不兼容vi模式

set langmenu=en_US                      " 菜单语言 中文为 zh_CN

set fileencodings=utf-8,chinese,latin-1

set fileencoding=utf-8                  " 中文不乱码了,世界都好了

set number                              " 窗口左侧显示行号

set relativenumber                      " 配合number,更高效的行间跳转

au GUIEnter * simalt ~x                " vim 以最大化打开

set ignorecase                          " 查找时忽略大小写

set smartcase                          " 当输入中含有大写的时候会强制区分大小写

set incsearch                          " 输入进行中实时匹配查找到的字符串

set autoindent                          " 用来自动缩进

set smartindent                        " 自动判断缩进长度,一般适用于类C语言

set expandtab                          " 用一定的空格来代替tab

set tabstop=4                          " tab占4个空格

set softtabstop=4                      " 设置expandtab的情况下,输入backspace删除的空格

set shiftwidth=4                        "一般情况下tabstop=softtabstop=shiftwidth,这样不会乱

上面比较容易搞乱的应该tab相关的内容了,如果你还是很乱,可以看看这里:Tabs and Spaces

key-notation(键位标识)

key跟标识的对应关系,详情可见:help key-notation


map

map可以理解成键位的映射,如:

nmap G Gzz 

上面指令的作用是在normal模式下将G(表示移动的最后一行)映射 Gzz(移动到最后一行+居中,zz表示居中),也就是命令生效之后,G就跟Gzz有相同的作用。

其中n表示在normal模式下起作用,同理,vmap表示在visual模式下,具体对应规则见下图:

map与mode的对应关系

值得注意的是nmap一般写成nnoremap比较好,中间的nore表示no recursion,不递归,比如

nmap w ww


nmap ww www

上面两句话导致的结果是按完一次w之后,光标会不断地向后移动,因为w触发ww,而ww又会触发w,如此递归下去,如果改成nnoremap w ww之后就不会再出现这个问题。

如果map的第二个参数是以:开头,那么表示映射的内容在命令行中生效,如

map tn :tabn<CR>

上面指令的意思是,输入tn,相当于①输入:(进入命令行模式)②输入tabn(跳到另一个tab页面)③输入回车

mapleader

这是vim中一个很重要的概念,leader的存在可以非常灵活地自定义快捷方式,很大地提高编辑的效率。

let mapleader=","

nmap <leader>h ^

默认的leader键是\,这还是有点反人类的,所以上面的第一句的意思是将leader键设置成逗号“,”,你也可以根据自己的喜好设置成空格(let mapleader = "\<space>")等,第二句话的意思表示当你再normal模式下输入,l(逗号+h),那么光标会移动到行首,是不是比按<Shift>+6方便不少?

Vundle

vim的扩展性很大程度上来自于各种插件的存在,一般情况下你可能会用到非常多的插件,如上面的配置文件中就有30多个插件,这么多的插件管理起来还是很麻烦的,增啥改查都很头疼,有了vundle就再也不怕了,如果你用了上面提供的配置文件的话,其实你已经见识到了它的强大,因为它已经默默帮你装了30多个插件。

set rtp+=~/vimfiles/bundle/Vundle.vim  "表示vundle的位置在Vundle.vim下

call vundle#begin('~/vimfiles/bundle/')  "表示插件存放的位置在bundle下

如果想添加什么插件只需要call vundle#begin和call vundle#end之间添加github上的插件位置,然后执行PluginInstall。删除更简单了,只需要将Plugin那一行去掉或者注释掉,然后执行PluginClean,接着输入Y就OK了,插件升级执行PluginUpdate一键搞定。需要注意的是PluginInstall和PluginClean之间可能需要先保存然后重启

如果你修改了vimrc文件后想立即生效,但是又不想重启,有什么解决的办法吗?当然有,只需要so  ~/.vimrc(so ~/_vimrc),其中so表示source。 如果你当前编辑的文件就是vimrc文件的话,那么so %就够了,其中%是一个特殊的寄存器,表示当前文件的名称,具体可以:help registers。

插件非常多,Vim Awesome上提供了非常详细的插件列表,总有几个是你的菜,在此我只推荐一个插件:

Plugin 'ianva/vim-youdao-translater'

有很多插件的官方文档缺少中文说明,说多都是泪,如果你的英语足够好,那就没必要了。这个插件其实就是有道翻译,用法很简单,Ctrl-t会翻译光标下对应的单词,<leader>yd 可以让你输入想翻译的单词。

Abbreviate

在idea intellij中有大量代码可以通过Ctrl-j完成,比如sout然后ctrl-j就可以快速生成System.out.println()。vim也不落后,只不过需要你自己去思考要配置哪些适合自己的缩写,一般用来缩写的都是使用频率不高的词,不然反而会降低效率,比较常见的有:

iabbrev teh the 或者 iab teh the

当你把the输错成teh时,会自动帮你更正为the。跟map类似,iab中的i表示作用在insert模式下,cabbrev(cab)仅作用于命令行模式,abbrev  (ab )作用于所有模式下,触发缩写替换的快捷键是CTRL-]


配置里面其它的很多内容都牵涉到vimscript,相信有一定编程基础的话读起来还是不费劲的,留着以后慢慢摸索也不迟。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容

  • 安装依赖库(支持Python 3、Lua、Ruby) sudo apt-get install libncurse...
    Cyfeng阅读 2,099评论 0 2
  • 真实有效的Vim配置记录(macOS) 以前在Ubuntu里配置了两次Vim,macOS中配置了一次,都没有配置成...
    染微言阅读 11,443评论 0 8
  • 网上已经有很多很好的vim使用和配置教程。但每个人都有自己的习惯,因此教程仅作参考,只有在使用过程中才能体会到具体...
    yiekue阅读 96,766评论 51 199
  • .vimrc内容如下 "=============================================...
    Morb1d阅读 1,020评论 0 0
  • 雨后天刚放晴,在图书馆倚窗而坐,贪婪地呼吸着窗外飘进来夹杂着淡淡花香的新鲜空气,偶尔的小憩放松身心,缓解因长时间注...
    风信子亦晴阅读 579评论 1 2