Developer J.K.

明明可以靠颜值吃饭但偏偏想要写代码做产品的jaykon

MACVIM 上手笔记

重新配置时,顺手重新整理一下这篇文章

##一、安装、配置

先下载它吧
https://github.com/b4winckler/macvim/releases

安装完毕后,运行,发现不对,传说中的透明背景呢?别急,这里先配置一下:

Edit->StartUp Settig

"不兼容vi模式
set nocompatible
"显示行号
set number
"语法高亮
syntax on
"按照C语法自动缩进
set cindent
"设置缩进长度
"详见http://dddspace.com/2010/03/vim-indentation-and-space-config.html
set tabstop=8
set shiftwidth=8
set softtabstop=8
set noexpandtab
"显示括号对应
set showmatch
"实时显示搜索结果
set incsearch
"编码设置
set encoding=utf-8
set fileencodings=gb2312,ucs-bom,utf-8,utf-16,cp936,gb18030,big5,euc-jp,euc-kr,latin1
"字体设置
set guifont=Arial_monospaced_for_SAP:h16
"设置颜色主题
colorscheme torte
"设置透明度
set transparency=20

保存重启即可。

##二:插件

装其它插件前,强列建义先安装pathogen.vim,它将大大减轻你管理和安装插件的复杂度。

pathogen.vimi
https://github.com/tpope/vim-pathogen

mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

word_complete.vim http://www.vim.org/scripts/script.php?script_id=73

一个自动补全的插件,它是跟据上下文进行的补全的,挺好用的

ZenCoding.vim http://www.vim.org/scripts/script.php?script_id=2981

有写HTML的对应个应该很清楚

The NERD tree
http://www.vim.org/scripts/script.php?script_id=1658

目录浏览,安装后默认不调用,可以配置快捷将其调用与隐藏
let mapleader = “,”
nmap n :NERDTreeToggle
这样,<,+n>即可调用

The NERD Commenter
http://www.vim.org/scripts/script.php?script_id=1218)

在normal模式下进行快速注释,我常用到就下面几个:

<,+cc>注释当前行,或所选行,

<,+space>切换注释和不注释

<,+cs>多行注释

前面可以加数字来指定注释行数

syntastic
https://github.com/scrooloose/syntastic

代码语法检查的接口,下载好后还是一样,放到buddle文件夹自动加载。

然后配置vimrc

""syntax
"" Set symbol characters
let g:syntastic_error_symbol='✗'
let g:syntastic_warning_symbol='⚠'
"在打开文件的时候检查
let g:syntastic_check_on_open=1
"" Open and close error list console automatically
"let g:syntastic_auto_loc_list=1

由于各个语言是要分别配置的,所以比较麻烦。

###php:

php比较方便,打开syntax_checkers/php.vim

找到display_errors=0改为display_errors=1

配置vimrc:

et g:syntastic_phpcs_conf = "--tab-width=4 --standard=CodeIgniter"
let g:syntastic_stl_format = '[%E{Err: %fe #%e}%B{, }%W{Warn: %fw #%w}]'

这样就OK了,每次打开或保存时都会检查语法。

###javascript:

这个有点麻烦,要用到jshint

首先要安装npm,一个nodejs模块打包安装命令。

http://nodejs.org/download/

安装完毕之后,在终端执行下面指令,安装jshint:

sudo npm install jshint -g

输入密码,回车

等它安装完后,输入终端jshint,有响应即代表安装成功。

然后配置vimrc:

"" Choose a Javascript syntax checker
let g:syntastic_javascript_syntax_checker="jshint"
let g:syntastic_javascript_jshint_conf="~/jshintrc.json"

可以看到上面有个路径”~/jshintrc.json”,它用来配置检查器的风格,这是jshint和jslint最大的区别。

新建一个json文件,/用户/[yourname]/jshintrc.json,内容如下:

{curly:true}

意思为在if/for等block必须使用{},否则报错,更多配置请移步

http://jshint.org/docs/

##三、技巧

###1)转编码:
在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式

:set fileencoding=utf-8

enconv 转换文件编码,比如要将一个GBK编码的文件转换成UTF-8编码,操作如下

enconv -L zh_CN -x UTF-8 filename(这个命令对windows的ANSI编码非常有效)。

iconv 转换,iconv的命令格式如下:

iconv -f encoding -t encoding inputfile

比如将一个UTF-8 编码的文件转换成GBK编码

iconv -f GBK -t UTF-8 file1 -o file2

###2)查找替换

:%s/foo/bar/g
Find each occurrence of ‘foo’ (in all lines), and replace it with ‘bar’.
:s/foo/bar/g
Find each occurrence of ‘foo’ (in the current line only), and replace it with ‘bar’.
:%s/foo/bar/gc
Change each ‘foo’ to ‘bar’, but ask for confirmation first.
:%s/\<foo\>/bar/gc
Change only whole words exactly matching ‘foo’ to ‘bar’; ask for confirmation.
:%s/foo/bar/gci
Change each ‘foo’ (case insensitive) to ‘bar’; ask for confirmation.
This may be wanted after using :set noignorecase to make searches case sensitive (the default).
:%s/foo/bar/gcI
Change each ‘foo’ (case sensitive) to ‘bar’; ask for confirmation.
This may be wanted after using :set ignorecase to make searches case insensitive.

##四、问题

###中文输入法:
我用的是QQ五笔,但在编辑模式中输入中文时,常常会触发MacVim的命令,原因是输是输入法没有完全截获按键;
解决方法:在命令行输入以下命令

defaults write org.vim.MacVim MMUseInlineIm 0

##五、在终端启动

下载后有一个mvim文件,将其拷贝到
$sudo cp -f mvim /usr/bin/

这里在终端通过mvim指令即可运行或编辑文件,编辑文件每次都是新建窗口,让他支持tab可以编辑这个mvim文件,首行加上
Shell

tabs=true

然后最后一个if 块替换成

# Last step:  fire up vim.
if [ "$gui" ]; then
  if $tabs && [[ `$binary --serverlist` = "VIM" ]]; then
    exec "$binary" -g $opts --remote-tab-silent ${1:+"$@"}
  else
    exec "$binary" -g $opts ${1:+"$@"}
  fi
else
  exec "$binary" $opts ${1:+"$@"}
fi