摘要:原文一直以来被称为编辑器之神的在下很难发挥其强大的功能,本文从实用的角度阐述如何调校出一个比较好用的不过仍然要说明下,在众多构建版本中平台的是我认为最好用的一个版本。
原文:https://keelii.github.io/2016/06/13/awsome-window-vimrc/
一直以来被称为编辑器之神的 vim 在 Windows 下很难发挥其强大的功能,本文从实用的角度阐述如何调校出一个比较好用的 vim
不过仍然要说明下,在众多 vim 构建版本中 Mac OS 平台的 MacVim 是我认为最好用的一个版本。由于自己公司主力用 Windows,又因笔者是一枚对编辑器颜值体验有要求的前端工程师, 所以才有了下文 ^!^
先说明下开发环境:
ThinkPad T450 (公司标配)
Windows 7 SP1 64bit 企业版
编程语言 Javascript, HTML, CSS, NodeJS, Python
前言本文旨在配置和使用 vim,并不适合太初级的 vim 用户,本文作者也不是 vim 死忠粉,经常混用 Webstrom 和 vim
开始开始之前我们先看一眼 Windows 上安装 Gvim 的默认界面,我们将从这里开始一步步的学习和配置
配置 _vimrc由于 vimrc 里面会有很多的配置项,为了避免混乱,我大概按自己的使用习惯分成了几个小组:
Startup - 编辑器启动时需要添加的一些配置
General - 通用配置
Lang & Encoding - 语言和编码
GUI - 界面
Format - 基本的代码格式
Keymap - 通用的快捷键
Plugin - 插件相关(包括和当前插件相关的配置和快捷键等)
Function - vimrc 里面用到的常用方法
Startup" Startup {{{ filetype indent plugin on " vim 文件折叠方式为 marker augroup ft_vim au! au FileType vim setlocal foldmethod=marker augroup END " }}}
设置 vim 相关文件打开后默认折叠方式为 marker,约定俗成的用三个花括号注释包裹起来,这样在你打开配置文件的时候 vim 就会帮你折叠起来,配置文件看起来就简洁多了,如图:
General" General {{{ set nocompatible set nobackup set noswapfile set history=1024 set autochdir set whichwrap=b,s,<,>,[,] set nobomb set backspace=indent,eol,start whichwrap+=<,>,[,] " Vim 的默认寄存器和系统剪贴板共享 set clipboard+=unnamed " 设置 alt 键不映射到菜单栏 set winaltkeys=no " }}}
基本上一眼就能看出来这是些啥玩意,不过后面两项目我个人感觉比较好用:
clipboard+=unnamed 比如你在其它地方 copy 了一段文字回到 vim 里面可以粘贴进来
winaltkeys=no 一般 windows 下应用程序的 alt 是用来定位菜单栏目的快捷键,我们需要禁用它,因为我们后面很多设置都需要使用 alt,需要使用 alt 来定位菜单的情况很少
Lang & Encoding" Lang & Encoding {{{ set fileencodings=utf-8,gbk2312,gbk,gb18030,cp936 set encoding=utf-8 set langmenu=zh_CN let $LANG = "en_US.UTF-8" "language messages zh_CN.UTF-8 " }}}
vim 里面设置编码的地方很多,上面这些配置可以保证不会出现乱码,像文件菜单、vim默认语言建议设置成 en_US
GUI" GUI {{{ colorscheme Tomorrow-Night source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim set cursorline set hlsearch set number " 窗口大小 set lines=35 columns=140 " 分割出来的窗口位于当前窗口下边/右边 set splitbelow set splitright "不显示工具/菜单栏 set guioptions-=T set guioptions-=m set guioptions-=L set guioptions-=r set guioptions-=b " 使用内置 tab 样式而不是 gui set guioptions-=e set nolist " set listchars=tab:▶ ,eol:¬,trail:·,extends:>,precedes:< set guifont=Inconsolata:h12:cANSI " }}}
编辑器配色建议使用 Tomorrow-Night,下载文件 copy 到 colors 目录即可
从上面的设置可以看出来,为了得到一个简洁漂亮的界面,我们去掉了菜单栏、各种滚动条、使用 vim 内置 tab 而不是 gvim 系统的 tab 样式,注意很多开发者喜欢显示不可见字符,比如:tab 制表符、换行符号、尾空格等。
我自己并不喜欢这样,因为这样只会使界面看起来更零乱,尤其是某插件纵向标尺
字体方面个人推荐 Inconsolata 这个在我看来是 Windows 平台最漂亮的等宽字体了
此时你的编辑器应该好看了很多:
Format" Format {{{ set autoindent set smartindent set tabstop=4 set expandtab set softtabstop=4 set foldmethod=indent syntax on " }}}
这个设置容易引起争议,我自己是这么个设置,大家按个人喜好就行了,反正我是不建议使用 tab 的,对代码格式有强迫症的人一般都会设置 foldmethod=indent
Keymap可以说快捷键是每个编辑器必备的功能,科学的设置快捷键能很大程度的提高效率。快捷键的设置要遵循一个规则:尽量不要修改系统默认配置的快捷键,非要设置的话选择好相应的模式
" Keymap {{{ let mapleader="," nmaps :source $VIM/_vimrc nmap e :e $VIM/_vimrc map tn :tabnew map tc :tabclose map th :tabp map tl :tabn " 移动分割窗口 nmap j nmap k nmap h nmap l " 正常模式下 alt+j,k,h,l 调整分割窗口大小 nnoremap :resize +5 nnoremap :resize -5 nnoremap :vertical resize -5 nnoremap :vertical resize +5 " 插入模式移动光标 alt + 方向键 inoremap inoremap inoremap inoremap " IDE like delete inoremap bdei nnoremap vv ^vg_ " 转换当前行为大写 inoremap mzgUiw`za " 命令模式下的行首尾 cnoremap cnoremap nnoremap :setlocal number! nnoremap w :set wrap! imap "+gP vmap "+y vnoremap d vnoremap "+y vnoremap "+y imap "+gP map "+gP cmap + cmap + exe "inoremap Tabular 对齐插件,文章末尾 gif 图里面有展示,visual 模式下选择要对齐的多行文本,进入命令模式 :Tabularize /对齐符号
Airline状态栏美化插件,准备弃用了
Ctrlp类似IDE里面的最近打开的文件,用于快速定位文件/Buffer
NERDCommenter注释插件,默认是快捷键是
Emmetc 用来快速写 HTML
SnipMate代码片段管理, 这个插件很早之前的那个版本不维护了,现在最新版的非常强大,不过有另外两个依赖,默认是没有任何内置的 snippet 的,如果需要样版,可以安装 这个插件 需要自定义的话手动更改 snippets 目录下的文件即可(其实就是个git仓库,你可以换成自己的)
FugitiveGit 命令增强工具,在 vim 使用 git,状态栏的分类名称就是调用的这个插件的方法 fugitive#head()
Neocomplete自动补全插件,这个代码实例插件是需要 lua 支持的,可能你需要手动编译一个带 lua 支持版本的 gvim,下篇文章 我将记录下自己在 Windows 上编译安装的过程
什么?你说为啥不装 YouCompleteMe,官方作者都不支持的插件就别折腾了吧,Neocomplete 这个实例插件对于我的情况来说已经够用了
Function常用方法这里我只有一个,移除尾空格
" Function {{{ " Remove trailing whitespace when writing a buffer, but not for diff files. " From: Vigil " @see http://blog.bs2.to/post/EdwardLee/17961 function! RemoveTrailingWhitespace() if &ft != "diff" let b:curcol = col(".") let b:curline = line(".") silent! %s/s+$// silent! %s/(s* )+\%$// call cursor(b:curline, b:curcol) endif endfunction autocmd BufWritePre * call RemoveTrailingWhitespace() " }}}No picture U say a ... ?
这个是动图,不动戳大
结语还有一点没说明,vimrc 里面的一些 windows 独有的设置我并没有加一些判断来兼容其它平台,这个是个人喜好而已,我会多带带分开维护不同平台的配置文件,而不是全部放在一起各种逻辑判断
引用完整配置文件
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/24871.html
摘要:不过近日来随着最后几个补全插件的加入和配置调整,这个配置文件已经比较完整,因此可以好好坐下来,对使用方法和注意点作一介绍。更建议你打开里面的各个文件查看,学习。 中文介绍 原来的repo放在 spf13-vim-leoatchina,因为原来一时脑抽,把中文字体放进去后导致体积较大,影响速度,所以重开一个repo并把windows下的工具分开,以增加clone速度。 现在的配置是在 l...
摘要:带上你的,走下面讲到的配置主要出自我自用的配置,感兴趣的可以参考一键装机之的几乎所有配置都可以保存在一个文件中,因此把同步起来,直接拷贝到相应位置并指定,则可以恢复相应的配置。 首发自简书 每个Vimer都有自己的一个配置,犹如每个剑客都有自己的一把剑(应该是吧)。(争取)作为一个传说中的全栈开发者,换机器就像换衣服一样频繁;在异国他乡的机器上,是否怀念那一套属于你的指法呢?下面会讲一...
摘要:终极目标问题描述首先声明,这是一次失败的编译经历,仅供参考,欢迎讨论。近期发现是一个很棒的编辑器,简洁高效。所以,毅然决然,自己从源码编译一个。首先运行上面目录树中的。我猜想这可能和我的失败有关。设置为,编译结果是,则代表。 终极目标 VIM = Python multi-version IDE 问题描述 首先声明,这是一次失败的编译经历,仅供参考,欢迎讨论。 近期发现VIM是一个很棒...
阅读 642·2021-11-25 09:43
阅读 1909·2021-11-17 09:33
阅读 827·2021-09-07 09:58
阅读 2064·2021-08-16 10:52
阅读 484·2019-08-30 15:52
阅读 1726·2019-08-30 15:43
阅读 977·2019-08-30 15:43
阅读 2929·2019-08-29 16:41