Mac Vim 安装
MacVim 介绍
MacVim如其名,就是Mac系统中的Vim。Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。1999 年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。但在2000年2月Vim赢得了Slashdot Beanie的最佳开放源代码文本编辑器大奖,又将Emacs推至二线, 总的来看, Vim和Emacs在文本编辑方面都是非常优秀的。
安装 MacVim
Mac预装了Vim,但官方的 Vim 在 Mac 上只有一个很不完善的,长期没人维护的 Carbon 图形用户界面。MacVim 主要是在此基础上添加了一个完整的 Cocoa 用户界面,其核心部分和 Vim 同步。MacVim 采用了分离进程的方式,一个 MacVim 程序可以启动多个 Vim 进程,每个显示在一个 MacVim 窗口中,这是官方的 Vim 和其他平台下的 GVim 所不支持的。MacVim 还支持很多 Mac OS X 原生的界面特性,比如工具栏、滚动条、全屏显示、Mac 菜单快捷键的绑定等。
# 查看预装vim版本
vim --version
MacVim 有两种安装方式
1 Github上下载macvim.dmg安装包进行安装
2 使用Homebrew安装
brew install macvim
配置 MacVim
在/usr/local/bin目录下为MacVim设置软链接。同时,Mac预装Vim版本过低,使用MacVim.app包中的Vim将其替代,如果想同时保留原来预装的/usr/bin/vim中的Vim,可以通过创建别名来将其“覆盖”掉。
配置环境变量及软链接
# 将可执行文件所在路径添加到环境变量`$PATH`中,单引号内的字符会原样输出
echo 'export PATH=/usr/local/Cellar/macvim/8.1-149_1/MacVim.app/Contents/bin:$PATH' >> ~/.zshrc
# 或将可执行文件mvim复制到/usr/local/bin/路径下
cp /usr/local/Cellar/macvim/8.1-149_1/MacVim.app/Contents/bin/mvim /usr/local/bin/mvim
# 或者在/usr/local/bin/路径中为mvim建立软链接
ln -s /usr/local/Cellar/macvim/8.1-149_1/MacVim.app/Contents/bin/mvim /usr/local/bin/mvim
# 为MacVim中的Vim创建别名,将其添加至~/.zshrc配置文件
echo 'alias vim="/usr/local/Cellar/macvim/8.1-149_1/MacVim.app/Contents/MacOS/vim"' >> ~/.zshrc
# 重新加载.zshrc以使修改生效
source ~/.zshrc
配置文件
在vim启动过程中,首先将查找配置文件并执行其中的命令,而这些初始化文件一般有vimrc、gvimrc和exrc三种。通过:version命令可以查看vim的配置文件信息:
:version
VIM - Vi IMproved 8.1 (2018 May 17, compiled Jun 30 2018 01:47:01)
macOS version
Included patches: 1-72
Compiled by Homebrew
......
system vimrc file: "$VIM/vimrc" # 全局vimrc配置文件
user vimrc file: "$HOME/.vimrc" # 用户vimrc配置文件
2nd user vimrc file: "~/.vim/vimrc" # 备用用户vimrc配置文件
user exrc file: "$HOME/.exrc" # 向后兼容vi的用户配置文件
system gvimrc file: "$VIM/gvimrc" # 全局gvimrc配置文件
user gvimrc file: "$HOME/.gvimrc" # 局部gvimrc配置文件
2nd user gvimrc file: "~/.vim/gvimrc" # 备用局部gvimrc配置文件
defaults file: "$VIMRUNTIME/defaults.vim"
system menu file: "$VIMRUNTIME/menu.vim" # MacVim的菜单文件的路径
fall-back for $VIM: "/Applications/MacVim.app/Contents/Resources/vim" # 系统变量VIM路
配置文件的加载顺序
可以通过:scriptname查看各脚本的加载顺序
1: /usr/local/Cellar/macvim/8.1-149_1/MacVim.app/Contents/Resources/vim/vimrc
2: ~/.vimrc
3: /usr/local/Cellar/macvim/8.1-149_1/MacVim.app/Contents/Resources/vim/runtime/syntax/syntax.vim
4: /usr/local/Cellar/macvim/8.1-149_1/MacVim.app/Contents/Resources/vim/runtime/syntax/synload.vim
5: /usr/local/Cellar/macvim/8.1-149_1/MacVim.app/Contents/Resources/vim/runtime/syntax/syncolor.vim
6: /usr/local/Cellar/macvim/8.1-149_1/MacVim.app/Contents/Resources/vim/runtime/filetype.vim
7: /usr/local/Cellar/macvim/8.1-149_1/MacVim.app/Contents/Resources/vim/runtime/menu.vim
8: /usr/local/Cellar/macvim/8.1-149_1/MacVim.app/Contents/Resources/vim/runtime/autoload/paste.vim
9: /usr/local/Cellar/macvim/8.0-133/MacVim.app/Contents/Resources/vim/runtime/ftoff.vim
10: ~/.vim/bundle/Vundle.vim/autoload/vundle.vim
......
85: /usr/local/Cellar/macvim/8.1-149_1/MacVim.app/Contents/Resources/vim/gvimrc
86: ~/.gvimrc
......
可以看到:macvim在启动时会依次加载全局vimrc>>用户.vimrc>>全局gvimrc>>用户.gvimrc,而终端vim在启动既不加载gvimrc也不加载.gvimrc也就是说:
用户配置文件中的配置会覆盖全局配置文件的配置;因此,我们可以通过创建~/.vimrc来修改vim的默认配置。
对GUIvim,gvimrc会覆盖vimrc中的配置;因此,我们可以通过创建~/.vimrc使终端vim和GUIvim拥有不同的配置。此外,GUIvim支持更多扩展,有些功能在终端vim中无法使用。
创建用户配置文件
# 切换至用户目录
cd ~
# 使用mvim创建并打开.vimrc
mvim .vimrc
编辑配置文件
# 可以使用以下命令,新建缓冲区来编辑配置文件:
:edit $MYVIMRC
# 也可以使用以下命令,新建标签页来编辑配置文件:
:tabedit $MYVIMRC
应用配置文件
修改配置文件后,需要重新启动Vim,或使用:source命令来应用新的设置
:source $MYVIMRC
我们可以在配置文件中增加以下命令,在保存后自动应用配置:
autocmd bufwritepost .vimrc source $MYVIMRC
配置文件基本配置
显示中文帮助
- 下载vimdoc
- 将文件解压到~/.vim/doc,若路径不存在则自己创建
- 打开vim执行:helptags ~/.vim/doc
- 在~/.vimrc中进行配置
set helplang=cn
if version >= 603
set helplang=cn
set encoding=utf-8
endif
保存配置文件后自动应用配置
:com[mand][!] [{attr}...] {cmd} {rep}
定义一个用户命令,命令的名字是 {cmd},而替换的文本是{rep}。该命令的属性 (参考下面) 是 {attr}。如果该命令已存在,会报错,除非已经指定了一个!,这种情况下命令被重定义。
BufWritePost是一个自动命令事件,BufWritePost
autocmd! BufWritePost $MYVIMRC source $MYVIMRC
设置字体
设置格式:set guifont=字体名:h字号
- 只要能在“字体册”中找到的字体都可以使用,可以自己下载安装喜欢的字体
- 如果字体名中包含空格,需使用\进行转义;
- 如果要使用powerline主题,则将字体设置为poerline类字体效果最好;
set guifont=Meslo\ LG\ S\ DZ\ Regular\ for\ Powerline:h13
字符编码
enc,fenc,fencs,tenc,一般乱码多是因这些参数设置不正确引起:
- enc,vim内部使用的编码,如buffer,寄存器中的字符串,windows一般是gbk,mac是utf-8
- fenc,当前打开文件自身的编码,如果enc和fenc不一致,vim会做编码转换,转换成fenc编码保存文件
- fencs,一个字符编码列表,编码的自动识别就是通过它实现的
- tenc,终端使用的编码,或者说vim用于屏幕显示时的编码,显示时vim会把内部编码转换为屏幕编码进行输出,默认为enc
set enc=utf-8 "mac和linux系统将enc设置为utf-8"
其他项
" 设置外观 -------------------------------------"
set number "显示行号"
set showtabline=0 "隐藏顶部标签栏"
set guioptions-=r "隐藏右侧滚动条"
set guioptions-=L "隐藏左侧滚动条"
set guioptions-=b "隐藏底部滚动条"
set cursorline "突出显示当前行"
set cursorcolumn "突出显示当前列"
set langmenu=zh_CN.UTF-8 "显示中文菜单"
" 变成辅助 -------------------------------------"
syntax on "开启语法高亮"
set nowrap "设置代码不折行"
set fileformat=unix "设置以unix的格式保存文件"
set cindent "设置C样式的缩进格式"
set tabstop=4 "一个 tab 显示出来是多少个空格,默认 8"
set shiftwidth=4 "每一级缩进是多少个空格"
set backspace+=indent,eol,start "set backspace&可以对其重置"
set showmatch "显示匹配的括号"
set scrolloff=5 "距离顶部和底部5行"
set laststatus=2 "命令行为两行"
" 其他杂项 -------------------------------------"
set mouse=a "启用鼠标"
set selection=exclusive
set selectmode=mouse,key
set matchtime=5
set ignorecase "忽略大小写"
set incsearch
set hlsearch "高亮搜索项"
set noexpandtab "不允许扩展table"
set whichwrap+=<,>,h,l
set autoread