Mac开发利器之程序员编辑器MacVim学习总结美洲杯

一个前端开发工程师的Vim跟IDE一样

2017/01/18 · 基础技术 · vim

原文出处: 小弟调调   

这里是我新配置出来的 jaywcjlove/vim-web 一直在打磨中,基本上可以用了。拿出来骗 star 先上图

美洲杯在哪买球 1

 Emacs和Vim都是程序员专用编辑器,Emacs被称为神的编辑器,Vim则是编辑器之神。至于两者到底哪个更好用,网络上两大派系至今还争论不休。不过,相比之下,Emacs更加复杂,已经不能算是一个编辑器了,有人这么说:Emacs是伪装成编辑器的操作系统。与之相反,Vim的定位很明确,就是要做一个强大的编辑器。由于笔者精力有限,决定还是选择自己认为相对简单点的Vim来学习。因此,笔者将会在本文跟大家介绍Mac下Vim的安装以及简单使用。
          首先,Mac系统默认已经安装了Vim。打开终端,输入vim,回车。可看到如下界面,即表示Vim已经安装了。在vim里输入":q"

安装

最新版本的Vim 7.4 使用(brew install macvim)安装,vim 版本更新 brew install macvim --override-system-vim

Shell

$ git clone https://github.com/jaywcjlove/vim-web.git ~/.vim $ ln -s ~/.vim/.vimrc ~/.vimrc # 上面执行完成之后 # 开始下载安装插件 $ vim # 在vim中运行 ":PlugInstall" # 上面插件安装完成之后执行下面内容 # command-t 文件搜索插件安装 $ cd ~/.vim/plugged/command-t $ rake make # 搜索文本内容工具 # 需要安装 CtrlSF的依赖ripgrep $ brew install ripgrep # 代码提示插件也需要你运行安装哦,不然没有效果嘞 cd ~/.vim/plugged/YouCompleteMe ./install.sh # 需要安装ctags 不然配置没效果哦 # ctags for Mac $ brew install ctags # ctags for Centos7 $ yum install ctags

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ git clone https://github.com/jaywcjlove/vim-web.git ~/.vim
$ ln -s ~/.vim/.vimrc ~/.vimrc
 
# 上面执行完成之后
# 开始下载安装插件
$ vim # 在vim中运行 ":PlugInstall"
 
# 上面插件安装完成之后执行下面内容
# command-t 文件搜索插件安装
$ cd ~/.vim/plugged/command-t
$ rake make
 
# 搜索文本内容工具
# 需要安装 CtrlSF的依赖ripgrep
$ brew install ripgrep
 
# 代码提示插件也需要你运行安装哦,不然没有效果嘞
cd ~/.vim/plugged/YouCompleteMe
./install.sh
 
# 需要安装ctags 不然配置没效果哦
# ctags for Mac
$ brew install ctags
# ctags for Centos7
$ yum install ctags

注: 默认已经安装了前端必备插件。.vimrc 是控制 vim 行为的配置文件,位于 ~/.vimrc,不论 vim 窗口外观、显示字体,还是操作方式、快捷键、插件属性均可通过编辑该配置文件将 vim 调教成最适合你的编辑器。

美洲杯在哪买球 2

查看配置位置

Shell

# 进入vim输入下面字符 :echo $MYVIMRC

1
2
# 进入vim输入下面字符
:echo $MYVIMRC

 

插件管理

这里面刚开始使用的Vim插件管理工具VundleVim/Vundle.vim,后面为了大家安装方便,使用了 junegunn/vim-plug,这个插件管理工具,俺十分不喜欢,多了个 autoload 目录,安装过程也奇丑无比,安装快速,所以就使用它吧,下面命令更新安装的 plug.vim,默认已经有了不需要这一步。

Shell

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

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

         在终端上,界面非常之简洁,如果你需要更加复杂的界面以及使用Vim更多的特性,需要下载客户端安装。在Mac上目前存在两个版本的Vim客户端:
         1、MacVim。使用Cocoa GUI,这是Mac上更新还很活跃的版本,也是Mac上最多人使用的版本。下载地址:http://code.google.com/p/macvim/
         2、使用Carbon GUI的版本,但是这个版本目前基本上不再更新。下载地址:http://sourceforge.net/projects/macosxvim/files/

安装插件

将配置信息其加入 ~/.vim/.vimrc 中的call plug#begin()call plug#end() 之间,最后进入 vim 输入下面命令,摁 enter 进行安装。

Shell

:PlugInstall

1
:PlugInstall

 

更新插件

插件更新频率较高,差不多每隔一个月你应该看看哪些插件有推出新版本,批量更新,只需在 vim 中执行下面命令即可。

Vim

:PlugUpdate

1
:PlugUpdate

         本文主要介绍MacVim,MacVim支持多窗口标签编辑以及全屏等新特性。下载了相应MacVim压缩包,解压以后将MacVim.app拖入/Applications目录下。启动MacVim,输入":h mvim", 按照提示,需要将mvim脚本文件拷贝到"/usr/local/bin"目录下。打开终端,输入命令 "cd /usr/local"以及"sudo mkdir bin",最后输入"sudo cp -f /Users/ericli/SoftWare/MacVim-snapshot-66/mvim  /usr/local/bin/",这样就可以在终端输入命令"mvim"来快速启动MacVim 。如果你不想将MacVim.app放到/Applications目录下,只需要在终端设置VIM_APP_DIR变量为你想放置MacVim.app的目录并导入到$HOME/.bash_profile中即可,比如:export VIM_APP_DIR=$HOME/SoftWare/MacVim-snapshot-66/。在MacVim输入":h macvim",可以查看MacVim的使用帮助介绍文档。

卸载插件

先在 .vimrc 中注释或者删除对应插件配置信息,然后在 vim 中执行下面命令,即可删除对应插件。

Vim

:PlugClean

1
:PlugClean

 

启动Vim

Shell

$ vim

1
$ vim

 美洲杯在哪买球 3

常用快捷键

这里的快捷键是我配置好的可用的。

Vim

;fl # 换出菜单列表 nw # 窗口切换 ;lw # 跳转至右方的窗口 ;hw # 跳转至左方的窗口 ;kw # 跳转至上方的子窗口 ;jw # 跳转至下方的子窗口 # 可以直接在Tab之间切换。 gt # 后一个Tab标签 gT # 前一个Tab标签 ;q # 关闭一个标签 ctrl-f # 下一页 f 就是`forword` ctrl-b # 上一页 b 就是`backward` ;t # 通过搜索文件打开文件 # 快速文本内定位 ;;b # 光标前代码定位 ;;e # 光标后代码定位 ;;f # 光标后代码定位 <搜索自负> 出现定位信息 ;;F # 光标前代码定位 <搜索自负> 出现定位信息 ;ilt # 设置显示/隐藏标签列表子窗口(函数列表)的快捷键。速记:identifier list by tag 0 # 行首 $ # 行尾 :r ~/git/R.js # 将文件内容导入到该文件中 :!which ls # 找命令不推出vim运行命令 :!date # 查看编辑时间 :r !date # 将当前编辑时间导入当前文本光标所在行 U # 选中 - 变大写 u # 选中 - 变小写 ~ # 选中 - 变大写变小写,小写变大写 ;cc # 代码注释"//" ;cm # 代码段落注释"/**/" ;ci # 注释相反,注释的取消注释,没注释的注释 ;cs # 段落注释,注释每行前面加"*" ;c$ # 光标开始到行结束的位置注释 ;cA # 在行尾部添加注释符"//" ;cu # 取消代码注释 za # 单个代码折叠 zM # 折叠左右代码 zR # 所有代码折叠取消 ;i # 开/关缩进可视化 > # 代码锁进 - 选中摁尖括号 < # 代码锁进 - 选中摁尖括号 :1,24s/header/www/g # 第1到24行将header替换成www <c-z> # 退出Vim

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
;fl # 换出菜单列表
nw  # 窗口切换
;lw # 跳转至右方的窗口
;hw # 跳转至左方的窗口
;kw # 跳转至上方的子窗口
;jw # 跳转至下方的子窗口
 
 
# 可以直接在Tab之间切换。
gt # 后一个Tab标签
gT # 前一个Tab标签
;q # 关闭一个标签
 
ctrl-f # 下一页 f 就是`forword`
ctrl-b # 上一页 b 就是`backward`  
 
;t # 通过搜索文件打开文件
 
# 快速文本内定位
;;b # 光标前代码定位
;;e # 光标后代码定位
;;f # 光标后代码定位 <搜索自负> 出现定位信息
;;F # 光标前代码定位 <搜索自负> 出现定位信息
 
;ilt # 设置显示/隐藏标签列表子窗口(函数列表)的快捷键。速记:identifier list by tag
 
0   # 行首
$   # 行尾
 
:r ~/git/R.js # 将文件内容导入到该文件中
:!which ls  # 找命令不推出vim运行命令
:!date      # 查看编辑时间
:r !date    # 将当前编辑时间导入当前文本光标所在行
 
U # 选中 - 变大写
u # 选中 - 变小写
~ # 选中 - 变大写变小写,小写变大写
 
;cc # 代码注释"//"
;cm # 代码段落注释"/**/"
;ci # 注释相反,注释的取消注释,没注释的注释
;cs # 段落注释,注释每行前面加"*"
;c$ # 光标开始到行结束的位置注释
;cA # 在行尾部添加注释符"//"
;cu # 取消代码注释
 
za # 单个代码折叠
zM # 折叠左右代码
zR # 所有代码折叠取消
 
;i  # 开/关缩进可视化
>   # 代码锁进 - 选中摁尖括号
<   # 代码锁进 - 选中摁尖括号
 
:1,24s/header/www/g  # 第1到24行将header替换成www
 
<c-z>  # 退出Vim

        

基础使用

  • inoremap (Insert Mode)就只在插入(insert)模式下生效
  • vnoremap (Visual Mode)只在visual模式下生效
  • nnoremap (Normal Mode)就在normal模式下(狂按esc后的模式)生效
  • 快捷键<c-y>, 标示(Ctrly,)

        现在MacVime的界面还是很简陋,下面开始介绍如何简单配置MacVim:

快捷键通配符

快捷键通配符 <leader> 相当于是一个通用的命令符,默认好像是,你可以在.vimrc中将他改为任意一个按键,在我们这个配置我改为了冒号;

Vim

" 定义快捷键的前缀,即 <Leader> let mapleader=";"

1
2
" 定义快捷键的前缀,即 <Leader>
let mapleader=";"

        1、创建~/.bashrc文件

插入命令

Vim

a # → 在光标所在字符后插入 A # → 在光标所在字符尾插入 i # → 在光标所在字符前插入 I # → 在光标所在行行首插入 o # → 在光标下插入新行 O # → 在光标上插入新行

1
2
3
4
5
6
a # → 在光标所在字符后插入  
A # → 在光标所在字符尾插入  
i # → 在光标所在字符前插入  
I # → 在光标所在行行首插入  
o # → 在光标下插入新行  
O # → 在光标上插入新行

        在终端键入"cd $HOME" 和“touch .bashrc”,即创建成功。打开文件,输入“alias vim=mvim”,并保存别名变量。然后再在终端键入“source .bashrc”使.bashrc文件生效。这样,在终端输入vim和mvim都可以启动MacVim.app了。

删除命令

Vim

x # → 删除关闭所在处字符 nx # → 删除关闭所在处n个字符 dd # → 删除光标所在行, ndd # → 删除n行 dG # → 删除光标所在行到文件末尾内容 D # → 删除光标所在处到行尾内容 :n1,n2d # → 删除指定范围的行 如:1,2d

1
2
3
4
5
6
7
x   # → 删除关闭所在处字符  
nx  # → 删除关闭所在处n个字符  
dd  # → 删除光标所在行,
ndd # → 删除n行  
dG  # → 删除光标所在行到文件末尾内容  
D   # → 删除光标所在处到行尾内容  
:n1,n2d # → 删除指定范围的行 如:1,2d

        在这里稍微解释下几个文件的作用,/etc/bashrc、/etc/profile是系统全局环境变量设置,给所有用户使用,~/.bashrc、~/.bash_profile、~/.bash_login、~/.profile是用户目录下的私有变量设置。当进入系统运行一个bash shell进程时,读取环境设定过程如下:1、读取全局环境变量设置/etc/profile,然后根据其内容读取/etc/profile.d、/etc/bashrc等设定,但是注意/etc/profile只在第一次运行bash shell时读取一次,而/etc/bashrc在每次运行bash shell都读取;2、然后读取当前用户目录下的~/.bash_profile、~/.bash_login或~/.profile三个中的其中一个文件的局部变量设置,而且只在第一次运行bash shell时读取,只有读取~/.bash_profile失败才会读取~/.bash_login,如果前边两文件读取失败才会读取~/.profile;3、最后根据~/.bash_profile的内容读取当前用户目录下的~/.bashrc文件中的局部环境变量设置,~/.bashrc文件在每次打开新的bash shell都读取一次。总结一下,/etc/bashrc、/etc/profile、~/.bashrc、~/.bash_profile、~/.bash_login、~/.profile都能设置环境变量,而/etc/profile、~/.bash_profile、~/.bash_login、~/.profile可以设定路径、环境变量等,只能登入的时候执行一次;/etc/bashrc、~/.bashrc保存路径、命令别名等,每次打开新的bash shell都会执行一次,通常前者/etc/profile、~/.bash_profile调用后者/etc/bashrc、~/.bashrc。更详细的资料可以参考该链接:http://blog.chinaunix.net/uid-24591881-id-2124780.html 。

定位命令

Vim

:set number #→ 设置行号 简写set nu :set nonu #→ 取消行号 gg #→ 到第一行 G #→ 到最后一行 nG #→ 到第n行 :n #→ 到第n行 S #→ 移至行尾 0 #→ 移至行尾 hjkl #→ 前下上后 w #→ 到下一个单词的开头 b #→ 与w相反 e #→ 到下一个单词的结尾。 ge #→ 与e相反 0 #→ 到行头 ^ #→ 到本行的第一个非blank字符 $ #→ 到行尾 g_ #→ 到本行最后一个不是blank字符的位置。 fa #→ 到下一个为a的字符处,你也可以fs到下一个为s的字符。 t, #→ 到逗号前的第一个字符。逗号可以变成其它字符。 3fa #→ 在当前行查找第三个出现的a。 F 和 T → 和 f 和 t 一样,只不过是相反方向。 zz # 将当前行置于屏幕中间(不是转载…) zt # 将当前行置于屏幕顶端(不是猪头~) zb # 底端啦~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
:set number   #→ 设置行号 简写set nu  
:set nonu   #→ 取消行号  
gg  #→ 到第一行  
G   #→ 到最后一行  
nG  #→ 到第n行  
:n  #→ 到第n行  
S   #→ 移至行尾  
0   #→ 移至行尾  
hjkl #→ 前下上后  
 
w   #→ 到下一个单词的开头  
b   #→ 与w相反  
e   #→ 到下一个单词的结尾。  
ge  #→ 与e相反  
 
0   #→ 到行头  
^   #→ 到本行的第一个非blank字符  
$   #→ 到行尾  
g_  #→ 到本行最后一个不是blank字符的位置。  
fa  #→ 到下一个为a的字符处,你也可以fs到下一个为s的字符。  
t,  #→ 到逗号前的第一个字符。逗号可以变成其它字符。  
3fa #→ 在当前行查找第三个出现的a。  
F 和 T → 和 f 和 t 一样,只不过是相反方向。  
 
zz # 将当前行置于屏幕中间(不是转载…)  
zt # 将当前行置于屏幕顶端(不是猪头~)  
zb # 底端啦~

      2.配置~/.vimrc和~/.gvimrc

复制剪切

yy 和 p 的组合键,或者 dd 和 p 的组合键

Vim

yy # → 复制当前行 nyy # → 复制当前行以下n行 dd # → 剪切当前行 ndd # → 剪切当前行以下n 行 p、P # → 粘贴在当前光标所在行或行上 2dd # → 删除2行 3p # → 粘贴文本3次

1
2
3
4
5
6
7
yy    # → 复制当前行  
nyy   # → 复制当前行以下n行  
dd    # → 剪切当前行  
ndd   # → 剪切当前行以下n 行  
p、P  # → 粘贴在当前光标所在行或行上  
2dd   # → 删除2行  
3p    # → 粘贴文本3次

      首先,在MacVim编辑器中输入“:version”,看到如下图示信息:

简单排版

Vim

:ce(nter) # 居中显示光标所在行 :ri(ght) # 靠右显示光标所在行 :le(ft) # 靠左显示光标所在行 J # 将光标所在下一行合并到光标所在行 >> # 光标所在行增加缩进(一个tab) << # 光标所在行减少缩进(一个tab) n>> # 光标所在行开始的n行增加缩进 n<< # 光标所在行开始的n行减少缩进

1
2
3
4
5
6
7
8
9
10
:ce(nter)  # 居中显示光标所在行
:ri(ght)   # 靠右显示光标所在行
:le(ft)    # 靠左显示光标所在行
J          # 将光标所在下一行合并到光标所在行
 
>>         # 光标所在行增加缩进(一个tab)
<<         # 光标所在行减少缩进(一个tab)
 
n>>        # 光标所在行开始的n行增加缩进
n<<        # 光标所在行开始的n行减少缩进

美洲杯在哪买球 4

保存退出

Vim

:w new_filename # → 保存为指定文件 :w # → 保存修改 :wq # → 保存修改并推出 ZZ # → 快捷键,保存修改并推出 :q! # → 不保存修改推出 :wq! # → 保存修改并推出(文件所有者,root权限的用户)

1
2
3
4
5
6
:w new_filename     # → 保存为指定文件  
:w   # → 保存修改  
:wq  # → 保存修改并推出  
ZZ   # → 快捷键,保存修改并推出  
:q!  # → 不保存修改推出  
:wq! # → 保存修改并推出(文件所有者,root权限的用户)

     从上图可以看出一些MacVim的配置信息:

整页翻页

Vim

ctrl-f # 下一页 f 就是`forword` ctrl-b # 上一页 b 就是`backward`

1
2
ctrl-f # 下一页 f 就是`forword`
ctrl-b # 上一页 b 就是`backward`

     $VIM系统变量的路径为:"/Applications/MacVim.app/Contents/Resources/vim"

替换

     MacVim的系统配置文件vimrc的路径:“$VIM/vimrc”

替换取消

Vim

r # → 取代关闭所在处字符 R # → 从光标所在处开始替换字符,摁ESC结束 u # → 取消上一步操作 ctrl r # → 返回上一步

1
2
3
4
r # → 取代关闭所在处字符  
R # → 从光标所在处开始替换字符,摁ESC结束  
u # → 取消上一步操作  
ctrl r # → 返回上一步

     用户配置文件vimrc的路径:"$HOME/.vimrc"

快捷替换

可视化模式下选中其中一个,接着键入 ctrl-n,你会发现第二个该字符串也被选中了,持续键入 ctrl-n,你可以选中所有相同的字符串,把这个功能与 ctrlsf 结合

     MacVim编辑器的用户初始化配置文件的路径:"$HOME/.exrc" (默认不存在,如果需要使用则在终端输入 “touch $HOME/.vimrc”创建)

精确替换

vim 有强大的内容替换命令,进行内容替换操作时,注意:如何指定替换文件范围、是否整词匹配、是否逐一确认后再替换。

Vim

:[range]s/{pattern}/{string}/[flags]

1
:[range]s/{pattern}/{string}/[flags]
  • 如果在当前文件内替换,[range] 不用指定,默认就在当前文件内;
  • 如果在当前选中区域,[range] 也不用指定,在你键入替换命令时,vim 自动将生成如下命令::'<,'>s/{pattern}/{string}/[flags]
  • 你也可以指定行范围,如,第三行到第五行::3,5s/{pattern}/{string}/[flags]
  • 如果对打开文件进行替换,你需要先通过 :bufdo 命令显式告知 vim 范围,再执行替换;
  • 如果对工程内所有文件进行替换,先 :args **/.cpp */*.h 告知 vim 范围,再执行替换;

:21,27s/^/#/g 行首替换#替换(增加)掉
:ab mymail asdf@qq.com 输入mymail 摁下空格自动替换成asdf@qq.com

     MacVim的系统配置文件gvimrc的路径:"$VIM/gvimrc"

开关注释

  • ;cc,注释当前选中文本,如果选中的是整行则在每行首添加 //,如果选中一行的部分内容则在选中部分前后添加分别/**/
  • ;cu,取消选中文本块的注释。

     用户配置文件gvimrc的路径:"$HOME/.gvimrc"

工程文件菜单

自定义快捷键

Vim

;fl # 显示文件菜单 file list

1
;fl # 显示文件菜单 file list

自带快捷键

Vim

shift i # 显示/隐藏隐藏文件 t # 在新 Tab 中打开选中文件/书签,并跳到新 Tab T # 在新 Tab 中打开选中文件/书签,但不跳到新 Tab i # split 一个新窗口打开选中文件,并跳到该窗口 gi # split 一个新窗口打开选中文件,但不跳到该窗口 s # vsplit 一个新窗口打开选中文件,并跳到该窗口 gs # vsplit 一个新 窗口打开选中文件,但不跳到该窗口 ctrl w h # 光标 focus 左侧树形目录 ctrl w l # 光标 focus 右侧文件显示窗口 ctrl w w # 光标自动在左右侧窗口切换 ctrl w r # 移动当前窗口的布局位置 o # 在已有窗口中打开文件、目录或书签,并跳到该窗口 go # 在已有窗口 中打开文件、目录或书签,但不跳到该窗口 ! # 执行当前文件 O # 递归打开选中 结点下的所有目录 x # 合拢选中结点的父目录 X # 递归 合拢选中结点下的所有目录 e # Edit the current dif 双击 相当于 NERDTree-o 中键 对文件相当于 NERDTree-i,对目录相当于 NERDTree-e D # 删除当前书签 # P # 跳到根结点 p # 跳到父结点 K # 跳到当前目录下同级的第一个结点 J # 跳到当前目录下同级的最后一个结点 k # 跳到当前目录下同级的前一个结点 j # 跳到当前目录下同级的后一个结点 C # 将选中目录或选中文件的父目录设为根结点 u # 将当前根结点的父目录设为根目录,并变成合拢原根结点 U # 将当前根结点的父目录设为根目录,但保持展开原根结点 r # 递归刷新选中目录 R # 递归刷新根结点 m # 显示文件系统菜单 cd # 将 CWD 设为选中目录 I # 切换是否显示隐藏文件 f # 切换是否使用文件过滤器 F # 切换是否显示文件 B # 切换是否显示书签 # q # 关闭 NerdTree 窗口 ? # 切换是否显示 Quick Help

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
shift i      # 显示/隐藏隐藏文件
t       # 在新 Tab 中打开选中文件/书签,并跳到新 Tab
T       # 在新 Tab 中打开选中文件/书签,但不跳到新 Tab
i       # split 一个新窗口打开选中文件,并跳到该窗口
gi      # split 一个新窗口打开选中文件,但不跳到该窗口
s       # vsplit 一个新窗口打开选中文件,并跳到该窗口
gs      # vsplit 一个新 窗口打开选中文件,但不跳到该窗口
 
ctrl w h    # 光标 focus 左侧树形目录
ctrl w l    # 光标 focus 右侧文件显示窗口
ctrl w w    # 光标自动在左右侧窗口切换
ctrl w r    # 移动当前窗口的布局位置
o       # 在已有窗口中打开文件、目录或书签,并跳到该窗口
go      # 在已有窗口 中打开文件、目录或书签,但不跳到该窗口
 
!       # 执行当前文件
O       # 递归打开选中 结点下的所有目录
x       # 合拢选中结点的父目录
X       # 递归 合拢选中结点下的所有目录
e       # Edit the current dif
 
双击    相当于 NERDTree-o
中键    对文件相当于 NERDTree-i,对目录相当于 NERDTree-e
 
D       # 删除当前书签
#
P       # 跳到根结点
p       # 跳到父结点
K       # 跳到当前目录下同级的第一个结点
J       # 跳到当前目录下同级的最后一个结点
k       # 跳到当前目录下同级的前一个结点
j       # 跳到当前目录下同级的后一个结点
 
C       # 将选中目录或选中文件的父目录设为根结点
u       # 将当前根结点的父目录设为根目录,并变成合拢原根结点
U       # 将当前根结点的父目录设为根目录,但保持展开原根结点
r       # 递归刷新选中目录
R       # 递归刷新根结点
m       # 显示文件系统菜单
cd      # 将 CWD 设为选中目录
 
I       # 切换是否显示隐藏文件
f       # 切换是否使用文件过滤器
F       # 切换是否显示文件
B       # 切换是否显示书签
#
q       # 关闭 NerdTree 窗口
?       # 切换是否显示 Quick Help

     MacVim的菜单文件的路径:"$VIMRUNTIME/menu.vim"

切割窗口

Vim

:new # 水平切割窗口 :split # 水平切割窗口(或者直接输入 :sp 也可以) :vsplit # 垂直切割( 也可以 :vs )

1
2
3
:new      # 水平切割窗口
:split    # 水平切割窗口(或者直接输入   :sp  也可以)
:vsplit   # 垂直切割( 也可以  :vs  )

     另外解释下, $HOME为当前用户目录的路径,$VIMRUNTIME路径为"/Applications/MacVim.app/Contents/Resources/vim" . 可以在MacVim中输入”:echo $VIMRUNTIME“来查看这些系统变量的路径。

Tab操作

     其次,从系统文件vimrc_example.vim和gvimrc_example.vim中copy标准的内容,保存到用户的配置文件~/.vimrc和~/.gvimrc中。在MacVim中输入如下命令:

多tab窗口拆分

Vim

:tabnew [ opt选项] [+cmd] 文件 #建立对指定文件新的tab :tabc #关闭当前的tab :tabo #关闭所有其他的tab :tabs #查看所有打开的tab :tabp #前一个 :tabn #后一个

1
2
3
4
5
6
:tabnew [ opt选项] [+cmd] 文件            #建立对指定文件新的tab
:tabc      #关闭当前的tab
:tabo      #关闭所有其他的tab
:tabs      #查看所有打开的tab
:tabp      #前一个
:tabn      #后一个

 

tab切换

Vim

# 下面为自定义快捷键 tnew #新建tab tn #后一个 tab tp #前一个 tab # 窗口切换 nw # 标准模式下: gt , gT #可以直接在tab之间切换。 # 还有很多他命令, 看官大人自己, :help table 吧。 Ctrl ww # 移动到下一个窗口 # 或者 先按组合键ctrl w ,然后都松开,然后通过j/k/h/l(等于vim移动的方向键) 来移动大哦哦左/上/下/右的窗口 Ctrl wj #移动到下方的窗口 Ctrl wk #移动到上方的窗口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 下面为自定义快捷键
tnew #新建tab
tn #后一个 tab
tp #前一个 tab
 
# 窗口切换
nw
 
# 标准模式下:
gt , gT #可以直接在tab之间切换。
 
# 还有很多他命令, 看官大人自己, :help table 吧。
Ctrl ww # 移动到下一个窗口
# 或者 先按组合键ctrl w ,然后都松开,然后通过j/k/h/l(等于vim移动的方向键) 来移动大哦哦左/上/下/右的窗口
Ctrl wj #移动到下方的窗口
Ctrl wk #移动到上方的窗口

[html] view plaincopy

HTML操作

便捷操作得益于插件Emmet.vim。键入 div>p#foo$*3>a 然后按快捷键 <c-y>, – 表示 <Ctrl-y> 后再按逗号【Ctrly,】。

按大写的 V 进入 Vim 可视模式,行选取上面三行内容,然后按键 <c-y>,,这时 Vim 的命令行会提示 Tags:,键入ul>li*,然后按 Enter。

<ctrl y>d 根据光标位置选中整个标签
<ctrl y>D 根据光标位置选中整个标签内容
<ctrl-y>n 跳转到下一个编辑点
<ctrl-y>N 跳转到上一个编辑点
<ctrl-y>i 更新图片大小
<ctrl-y>m 合并成一行
<ctrl-y>k 移除标签对
<ctrl-y>j 分割/合并标签
<ctrl-y>/ 切换注释
<ctrl-y>a 从 URL 地址生成锚
<ctrl-y>A 从 URL 地址生成引用文本

 

搜索查找

  1. :e $VIMRUNTIME/vimrc_example.vim  
  2. :saveas ~/.vimrc  
  3. :e $VIMRUNTIME/gvimrc_example.vim  
  4. :saveas ~/.gvimrc  

文件搜索

搜索有两个插件可以使用 wincent/command-tjunegunn/fzffzf没有下载下来,这里在使用 command-t ,使用的时候记得,进入目录 cd ~/.vim/plugged/command-t 运行 rake make

Vim

;t # 启动搜索文件

1
;t # 启动搜索文件

 

搜索文本内容

dyng/ctrlsf.vim,在插件完成安装之后,需要安装另外的工具,才能运行

Shell

brew install ripgrep # 上面安装好了之后,在.vimrc中配置下面内容 # 快捷键速记法:search in project let g:ctrlsf_ackprg = 'rg' # 设置快捷键 nnoremap <Leader>sp :CtrlSF<CR> # 选中搜索 - 文本中选中关键字 vmap <Leader>sp <Plug>CtrlSFVwordPath # 选中搜索 - 结果列表 vmap <Leader>sl <Plug>CtrlSFQuickfixVwordPath

1
2
3
4
5
6
7
8
9
10
11
brew install ripgrep
 
# 上面安装好了之后,在.vimrc中配置下面内容
# 快捷键速记法:search in project
let g:ctrlsf_ackprg = 'rg'
# 设置快捷键
nnoremap <Leader>sp :CtrlSF<CR>
# 选中搜索 - 文本中选中关键字
vmap     <Leader>sp <Plug>CtrlSFVwordPath
# 选中搜索 - 结果列表
vmap     <Leader>sl <Plug>CtrlSFQuickfixVwordPath

基本使用方法

Vim

:CtrlSF pattern dir # 如果后面不带 dir 则默认是 . 当前目录搜索 # 使用 j k h l 浏览CtrlSP窗口 使用 Ctrl j/k 在匹配项中跳转。 # 使用 q 则退出 CtrlSP窗口 # 使用 p

1
2
3
4
:CtrlSF pattern dir  # 如果后面不带 dir 则默认是 . 当前目录搜索
# 使用 j k h l 浏览CtrlSP窗口  使用 Ctrl j/k 在匹配项中跳转。
# 使用 q 则退出 CtrlSP窗口
# 使用 p

     3、添加插件

快速移动

Lokaltog/vim-easymotion 把满足条件的位置用 [;A~Za~z] 间的标签字符标出来,找到你想去的位置再键入对应标签字符即可快速到达。

Shell

;;b # 光标前代码定位 ;;e # 光标后代码定位 ;;f # 光标后代码定位 <搜索自负> 出现定位信息 ;;F # 光标前代码定位 <搜索自负> 出现定位信息

1
2
3
4
;;b # 光标前代码定位
;;e # 光标后代码定位
;;f # 光标后代码定位 <搜索自负> 出现定位信息
;;F # 光标前代码定位 <搜索自负> 出现定位信息

        通常有如下两种方式添加插件:

插件说明

这里面所有的插件,并不是都放到了我的 .vimrc 文件中 .vimrc 配置文件中,是我个人喜欢并且习惯的配置。

      其一:拷贝该 plugin_name.vim插件到你个人插件目录~/.vim/plugin/下,拷贝plugin_help.txt到你个人文档目录~/.vim/doc/下,若存在该插件syntax的vim支持文件则放到~/.vim/syntax/目录下,如果以上目录不存在到终端输入如下命令创建:

插件管理工具

 

主题风格

[html] view plaincopy

使用界面

 

管理项目

  1.   

代码书写

[html] view plaincopy

代码阅读

 

参考资料

  1.   

其它人的vimrc配置

美洲杯在哪买球 5

[html] view plaincopy

 

  1. cd $HOME  
  2. mkdir .vim  
  3. mkdir .vim/plugin  
  4. mkdir .vim/doc  
  5. mkdir .vim/syntax  

       比如,拷贝matchit.txt到~/.vim/doc/下,拷贝matchit.vim到目录~/.vim/plugin/下, 

 

      其二,在你的vimrc配置文件最后加一行命令:

 

[html] view plaincopy

 

  1. source $VIMRUNTIME/macros/matchit.vim0  

       最后,还有一种不常用的方式可以安装插件,将插件、文档、syntax支持文件分别放到$VIMRUNTIME/plugin/  、$VIMRUNTIME/doc/、$VIMRUNTIME/syntax/三个目录下,或者/usr/share/vim/vim73/plugin/、/usr/share/vim/vim73/doc/、/usr/share/vim/vim73/syntax三个目录下都可以使MacVim自动加载插件。

 

 

        以上安装插件的方法都比较麻烦,并且每个插件的文件分散到几个文件夹去,不方便管理。在这里给各位推荐一个很方便管理插件的Vim插件vundle:https://github.com/gmarik/vundle。vundle可以使得安装的插件的文件都放到同一个目录下,并且简单设置就可使用。安装方法如下:

        首先,在终端输入如下命令:

[html] view plaincopy

 

  1. git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle  

         然后,在~/.vimrc里写入以下配置:

 

 

[html] view plaincopy

 

  1. set nocompatible               " be iMproved  
  2.  filetype off                   " required!  
  3.   
  4.  set rtp =~/.vim/bundle/vundle/  
  5.  call vundle#rc()  
  6.   
  7. " let Vundle manage Vundle  
  8. " required!   
  9. "这是vundle本身的设置  
  10.  Bundle 'gmarik/vundle'    
  11.    
  12.  " My Bundles here:  
  13.  "这里是设置你自己自定义的插件的设置vundle设置,注意:下载的插件git为:https://github.com/godlygeek/tabular.git,则设置为Bundle 'godlygeek/tabular';https://github.com/gmarik/vundle.git设置则为 Bundle 'gmarik/vundle'    
  14.  " original repos on github  
  15.  Bundle 'godlygeek/tabular'  
  16.   
  17.  " vim-scripts repos,vim-scripts的访问地址,格式则如下:  
  18.  Bundle 'L9'  
  19.  Bundle 'FuzzyFinder'  
  20.  " non github repos ,非git的访问地址的,格式如下:  
  21.  Bundle 'git://git.wincent.com/command-t.git'  
  22.  " ...  
  23.   
  24.  filetype plugin indent on     " required!  
  25.  "  
  26.  " Brief help  
  27.  " :BundleList          - list configured bundles  
  28.  " :BundleInstall(!)    - install(update) bundles  
  29.  " :BundleSearch(!) foo - search(or refresh cache first) for foo  
  30.  " :BundleClean(!)      - confirm(or auto-approve) removal of unused bundles  
  31.  "  
  32.  " see :h vundle for more details or wiki for FAQ  
  33.  " NOTE: comments after Bundle command are not allowed..  

       

        最后,登陆MacVim,运行:BundleInstall命令。这样,Vundle.vim管理插件就安装成功。接下来继续简单介绍下,Vundle插件的使用:

 

搜索新的插件:

 

[html] view plaincopy

 

  1. :BundleSearch matchit   

 

美洲杯在哪买球 6

安装新的插件:

 

[html] view plaincopy

 

  1. :BundleInstall matchit.zip  

 

美洲杯在哪买球 7  
最后在~/.vimrc中的注释" vim-scripts repos下,加入如下命令并保存.vimrc文件,这样一个插件就安装成功了:

 

[html] view plaincopy

 

  1. Bundle 'matchit.zip'  

 

更新所有安装的插件(这个命令会根据~/.vimrc的Bundle 设置来更新插件):

 

[html] view plaincopy

 

  1. :BundleInstall  

列出所有安装的插件列表:

 

 

[html] view plaincopy

 

  1. :BundleList  

清除插件命名(这个命令我测试有些插件删除不了,手动删除~/.vim/bundle的相关插件的目录,并将~/.vimrc中的相关配置去掉即可):

 

 

[html] view plaincopy

 

  1. :BundleClean   

 

上述中的Tabular插件是用于编码中的字符对齐的,关于其具体用法见链接:https://github.com/godlygeek/tabular.用法是选定一段文本,然后输入相应的命令来根据相应的字符对齐。几个常用的命令如下:

 

[html] view plaincopy

 

  1. :Tab /=   
  2. :Tab /:  
  3. :Tab /:zs  
  4. :Tab /|  

分别是选定文本按=、:、:zs、|等符号对齐。

 

     推荐一些插件:

      **NERD_tree :*** 一个文件管理插件,一些常用命令: 打开一个目录树( :NERDTree <启动目录> | <bookmark>  )  关闭目录树栏(:NERDTreeClose);切换目录树栏(:NERDTreeToggle);  定义标签(:Bookmark <name>);定义Root标签(:BookmarkToRoot <bookmark>)。。。。。。更多命令和用法见 :help NERD_tree。

  word_complete  :代码自动补全

  SuperTab :省去Ctrl-n或Ctrl-p快捷键,通过按tab键快速显示补全代码.

  xptemplate : 快速自动完成一些if、switch、for、while结构模板代码,支持c、c 、Lua、Ruby、Php、html、css、javascript等多种语言。一般是输入结构体的关键字后,再按Ctrl-组合键即可完成代码补全,然后按Tab键跳转到不同的位置替换模板内容。比如:输入for后按Ctrl-组合键即可快速完成for结构的模板代码。

  ctags : 一个扫描记录代码的语法元素,并记录为tag,方便代码定位跳转等操作,MacVim自带,但是据说有点问题,笔者用Vundle安装的貌似也有问题,推荐用MacPorts安装,然后在~/.gvimrc配置中加入:  let Tlist_Ctags_Cmd="/opt/local/bin/ctags"。用法:在终端 cd 进入到你的项目根目录,输入语句即可将项目所有代码文件打上tag: 

 ctags -R --c -kinds= px --fields= iaS --extra= q .

   taglist : 可以用Vundle安装,在编辑代码文件时,输入命令":TlistToggle"在右边就会出现当前类的函数或变量列表。输入命令“:tag <函数名或变量、类>”,如果只有一个文件定义了该函数或变量、类,vim打开该文件并将光标定位到对应的位置;如果多个文件有这个函数名或变量、类的tag,将给提示,并可输入“:tselect” ,显示可选的文件。快捷键跳转Ctrl ],Ctrl-o。

   Cscope :功能跟ctags差不多,不过更加强大,MacVim默认已经支持,输入“:version”命令查看.

   OmniCppComplete : 功能跟taglist差不多。 

   a.vim :在.cpp文件和.h头文件间快速切换的插件。

   grep.vim : 在工程中查找词汇的插件。

   minibufexplorerpp : 操作缓存buffer窗口。

   quickfix :MacVim内置安装好了,不需要重新安装。显示一些命令查询结果以及编译错误等信息。

   Command-t :用Commad-t命令快速查找切换文件。如果是用Vundle安装的话,还不能使用,在MacVim中输入“:CommandT”命令会报错。用Vundle安装好打开终端,输入如下命令,等待编译完毕后就可以使用了:

 

[html] view plaincopy

 

  1. cd ~/.vim/bundle/Command-T/ruby/command-t  
  2. ruby extconf.rb  
  3. make  

 

   NERD_commenter.vim : 注释插件。

   DoxygenToolkit.vim : 用于快速生成注释,并由注释生成文档。

   winmanager : 可以用Vundle安装,管理窗口的插件,可以跟NERD_tree、Taglist插件结合,打造一个类似IDE的界面。只需要在NERD_tree.vim中加入如下代码:

 

[html] view plaincopy

 

  1. let g:NERDTree_title = "NERDTree"  
  2. function!  NERDTree_Start()  
  3.     exec 'NERDTree'  
  4. endfunction  
  5. function! NERDTree_IsValid()  
  6.     return 1  
  7. endfunction  

 

 

并且在winmanager.vim的找到下面代码,增加一句代码:

 

[html] view plaincopy

 

  1. " toggle showing the explorer plugins.  
  2. function! <SID>ToggleWindowsManager()  
  3.     if IsWinManagerVisible()  
  4. 美洲杯在哪买球,        call s:CloseWindowsManager()  
  5.     else  
  6.         call s:StartWindowsManager()  
  7.         "NERDTree 打开的时候有一个空白窗口,需要关闭  
  8.         exec 'q'  
  9.     end  
  10. endfunction  

 

 

最后在~/.gvimrc中加入如下配置:

 

[html] view plaincopy

 

  1. "在vim左侧显示窗口Taglist和文件列表窗口  
  2. "let g:winManagerWindowLayout='FileExplorer,BufExplorer|TagList'  
  3. let g:winManagerWindowLayout='NERDTree, BufExplorer|TagList'  
  4. "打开vim时自动打开winmanager  
  5. let g:AutoOpenWinManager = 1  
  6. "定义打开关闭winmanager的快捷键为 wt组合键命令  
  7. nmap wt :WMToggle<cr>  

 

           

重启,即可看到一个类似IDE的Vim界面。

美洲杯在哪买球 8

 

 

   4、Vim的模式与一些常用命令

 i、Vim的模式

      Vim有三种模式,Normal 、Insert 、 Visual。在Normal模式下,可以输入运行命令;在Insert模式下,可以输入编辑文本;在Visual模式下,可以对选定的文本运行命令操作并该命令仅仅作用于选定文本。启动Vim的默认模式是Normal模式,输入 i、I、a、A、o、O、s、S、r、R可以进入Insert模式,其中区别在于:

       

   进入Insert模式的命令区别
命令 区别
     i  在光标之前插入字符
     I 在光标所在行的所有字符开头之前插入字符
    a 在光标之后插入字符
    A 在光标所在行的所有字符之后插入字符
o 在当前光标的下面打开新的一行
O 在当前光标的上面打开新的一行
s 删除当前光标下的字符
S 删除当前光标所在行的所有字符
r 用新输入的字符替换当前光标所在字符,然后立即返回Normal模式
R 在当前光标位置所在字符开始往后一直用新输入的字符替换所有原有字符

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

 

 

 

 

 

 

 

     

 

      

  在Nomal模式中输入v进入Visual模式。 在Insert模式或Visual模式中按Esc键即返回Normal模式。

 

ii、VIm的常用命令(不做特殊注释的话,下面的命令一般在Normal模式生效,一般对文本操作的命令在Visual模式下也同样生效)

        (1)、光标的移动: 

          h(左)、j(下)、k(上)、l(右)移动光标。还可以在命令之前输入数字,指定要移动多少行。比如:7h表示左移7个光标,6j表示光标下移6行。

         光标向前跳多个词到达词首,比如5个词,输入5w;光标向后跳7个词到达词首,输入7b。跳到3个单词后的词末,输入3e;跳到3个单词前的词末,输入3ge。

         移动到行首第一个非空字符,输入"^"或按Home键;移动到光标所在行的第一个字符(包括空格);移动到行尾,输入"$"或按End键。注意,这个只有"$"或按End键之前加数字会生效。

         向前移动到某个指定的字符,比如向前找第三个“h”,输入”3fh“;向前把光标移动到第四个"b"字符的前一个字符上,输入”4tb“。向后移动到某个指定的字符,比如向后查找第三个”h“,输入”3Fh“;向后把光标移动到第四个”b“的后一个字符上,输入”4Tb“。这四个命令都可以使用”;“命令重复,","命令反向重复。光标不会移出当前行。

         "%"命令可以将当前光标所在的括弧移动到匹配的括弧的位置,比如:从”)“移动到”(“,反之亦然。

         gd命令到达光标所在处函数或变量定义之处。 

         ”*“和”#“命令匹配当前光标所在单词, ”*“移动光标的下一个匹配单词,而”#“命令是移动光标到上一个匹配单词。

         移动到指定行,比如想移动到第30行,输入30G或输入30gg。没有数字限制的话,G命令将光标移动到文件的尾部,gg命令移动光标到文件开始。

         移动都某部分,比如到文件大约10%的行位置,输入”10%“。

         H命令移动光标到视野内的第一行,M移动到视野内的中部,L移动光标到视野内的最后一行。

         确定光标的位置,输入Ctrl-G命令。

         Ctrl-u命令光标向上移动半屏,Ctrl-d光标向下移动半屏。

         Ctrl-e上滚一行,Ctrl-y下滚一行。

         Ctrl-f光标向前移动一整屏,Ctrl-b光标向后移动一整屏。

        ”zt“命令将光标所在行移动到屏幕的顶部,”zz“命令将光标所在行移动到屏幕的中部,”zb“将光标移动到屏幕的底部。

本文由美洲杯在哪买球发布于计算机教程,转载请注明出处:Mac开发利器之程序员编辑器MacVim学习总结美洲杯

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。