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

管理项目

          使用G命令或者”n“命令或者查找”/“命令跳到其他行后,Vim会记录下你跳过来的地方,使用两个单引号(”)即可跳回原来的地方;或者使用Ctrl-o命令跳到较旧的地方;Ctrl-i命令或Tab键跳到较新的地方。输入”:jumps”命令可以看到光标跳转的位置列表信息。

基础使用

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

        c$的等价快捷键为C, 作用修改到行尾。

Tab操作

    **

切割窗口

Vim

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

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

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

定位命令

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 # 底端啦~

 

精确替换

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

 

快捷替换

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

 

常用快捷键

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

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

 

更新插件

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

Vim

:PlugUpdate

1
:PlugUpdate

          要获得具体的帮助,比如关于u命令的帮助,输入类似“:help
u”。

删除命令

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

 

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 #移动到上方的窗口

 

代码阅读

        可视化选择:v,V,Ctrl-v.
 v,V都可以进入Visual模式,而Ctrl-v可以进入Visual
Block模式(即块操作模式),在这两个模式下,都可以移动光标选定编辑文本。对选定文本执行c,y,d等操作,下面有几个常用的对选定文本的操作:

安装

最新版本的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 调教成最适合你的编辑器。

永利网址 1

代码书写

     
  从当前光标位置向前查找当前行上的某个指定字符的前一个字符,命令是t。比如:
查找o之前的字符,to。T也和t命令一样,但是查找方向相反。

插件管理工具

 

复制剪切

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次

        (5)、查询字符:

快速移动

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

Shell

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

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

          使用 :help text-objects
可以在帮助里查看更多的文本对象的更多命令内容。

参考资料

 

使用界面

[html] view
plain
copy

安装插件

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

Shell

:PlugInstall

1
:PlugInstall

          Esc按键可以终止大部分命令。    

卸载插件

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

Vim

:PlugClean

1
:PlugClean

 

插件说明

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

 

简单排版

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行减少缩进

 

保存退出

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权限的用户)

 

文件搜索

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

Vim

;t # 启动搜索文件

1
;t # 启动搜索文件

         查找字符通常区分大小写的,如果不想区分大小写,可在~/.vimrc文件中加入命令”set ignorecase”命令。

替换

         New window  快捷键 Command+n

替换取消

Vim

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

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

**           创建**~/.vim/dict     目录,
然后创建包含各种语言函数列表的txt文件;最后在~/.gvimrc文件加入如下命令:

开关注释

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

 

快捷键通配符

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

Vim

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

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

vim 命令(全)

搜索文本内容

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

          (6)、复制字符

主题风格

       

整页翻页

Vim

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

1
2
ctrl-f # 下一页 f 就是`forword`
ctrl-b # 上一页 b 就是`backward`
  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  

多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      #后一个

 

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.   

工程文件菜单

自定义快捷键

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

          (11)、退出:

启动Vim

Shell

$ vim

1
$ vim

        宏录制:q + <宏> + 操作队列 + q ,@<宏> ,
@@。
<宏>
可以是任意单个字母(区分大小写)或任意单个数字, q<宏> 进入recording模式,该模式下你的操作记录会保存到寄存器<宏>
中;然后输入@<宏>操作命令将重新执行被记录到寄存器<宏>中的命令;@@命令跟@<宏>的作用一样。**

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

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

原文出处: 小弟调调   

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

永利网址 2

          cgg,修改到文件的开头。

插入命令

Vim

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

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

[html] view
plain
copy

查看配置位置

Shell

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

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

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

插件管理

这里面刚开始使用的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

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

其它人的vimrc配置

永利网址 3

       
 删除从当前光标到所在行上指定的某个字符之间的所有字符(包括该指定字符)

搜索查找

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

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

[html] view
plain
copy

       (19)菜单快捷键

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

[html] view
plain
copy

 

 

[html] view
plain
copy

  1. :BundleSearch matchit   

         Open New File  快捷键爱你 Command+o

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

搜索新的插件:

 

         使用R命令启动Replace模式,
这个模式下在当前光标位置所在字符开始往后一直可以持续用新输入的字符替换所有原有字符,直到你退出Replace模式。在这个模式下,使用退格键Backspace,原来被替换的字符会恢复。

 

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

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

[html] view
plain
copy

[html] view
plain
copy

手把手教你把Vim改装成一个IDE编程环境(图文)

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

 

           另存为:

 

         Save 快捷键 Command+s 

 

 

 

~/.gvimrc配置如下:

 

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

[html] view
plain
copy

        d$的等价快捷键为D,作用删除到行尾。

           自己配置不同的语言函数自动补全的步骤:

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

 [N]-Ctrl-w-n或:[N]new
组合命令将Vim的屏幕高度分出一个新的具有N行的屏幕,并打开一个新的空文件开始编辑。

 永利网址 4

 

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

[html] view
plain
copy

          修改当前光标之前的单词,cb.

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

  1. let g:NERDTree_title = “NERDTree”  
  2. function!  NERDTree_Start()  
  3.     exec ‘NERDTree’  
  4. endfunction  
  5. function! NERDTree_IsValid()  
  6.     return 1  
  7. endfunction  

           (12)、放弃执行命令:

 

        dh的等价快捷键为 X,作用删除光标左边的字符。

         :scriptnames命令可以查找~/.vimrc或~/.gvimrc或插件等文件的路径。

       
 删除某个字符,移动光标到所在字符,然后输入x或dl(光标下的字符)、X或dh(光标签的字符);删除多个字符,可以在x之前加数字;

[html] view
plain
copy

:[N]vne[w]
组合命令将Vim的屏幕宽度分出一个新的具有N列的屏幕,并打开一个新的空文件开始编辑。

        分屏:

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

          保存文件: 

          cG,修改到文件的末尾。

  1. source $VIMRUNTIME/macros/matchit.vim0  

 

          (9)、查找命令

           ”/d.i“只匹配第一个字符是”d“,第二个字符是任意字符,第三个字符是”i“的字符串。

 

        d          删除操作命令

 

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

 

 

 

 

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

        1、创建~/.bashrc文件

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

 

 

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

        <      
  选中文本向左Tab缩进。在Normal模式和Visual模式下都能生效。

[html] view
plain
copy

 

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

 

       
 db表示从当前位置删除到前一个单词的开头。diw表示删除光标上的单词(不包括空格)。daw表示删除光标上的单词(包括空格)。

 

  1. ” An example for a vimrc file.一般设置cli相关设置,即命令行相关设置,插件相关设置。原因加载顺序是先读取vimrc配置,然后读取plugin插件,然后加载GUI,最后再读取gvimrc配置文件。所以,GUI以及快捷键一般放到gvimrc里设置,有时候在vimrc设置跟界面显示相关的没作用,要在gvimrc里设置才有用。vimrc配置是vim,gvimrc配置文件是gvim,如果想要vim也有配色等,可以将界面相关的设置放在vimrc文件里重新设置一下。  
  2.    
  3. “——————————————————————————-  
  4. ”           基本设置  
  5. “——————————————————————————-  
  6. ” When started as “evim”, evim.vim will already have done these settings.  
  7. if v:progname =~? “evim”  
  8.   finish  
  9. endif   
  10.   
  11. “启用Vim的特性,而不是Vi的(必须放到配置的最前边)  
  12. set nocompatible  
  13.   
  14. ” 设置编码    
  15. set encoding=utf-8    
  16. set fenc=utf-8    
  17. set fileencodings=ucs-bom,utf-8,cp936,gb2312,gb18030,big5   
  18.    
  19. “显示行号  
  20. set number  
  21.   
  22. “设置默认打开窗口大小  
  23. set lines=70 columns=100  
  24.   
  25. “设置窗口透明度  
  26. set transparency=10  
  27.   
  28. “设置背景色  
  29. “set bg=dark  
  30.   
  31. “用 koehler 调色板  
  32. colorscheme koehler  
  33.   
  34. “隐藏工具栏和滑动条  
  35. set guioptions=aAce      
  36.             
  37. “设置标签栏  
  38. “最多30个标签  
  39. set tabpagemax=30   
  40. “显示标签栏    
  41. set showtabline=2     
  42.        
  43.   
  44. “设定文件浏览器目录为当前目录  
  45. “set bsdir=buffer  
  46. “set autochdir  
  47.   
  48. “保存100条命令历史记录  
  49. set history=100   
  50.       
  51. “总是在窗口右下角显示光标的位置  
  52. set ruler     
  53.       
  54. “在Vim窗口右下角显示未完成的命令   
  55. set showcmd           
  56.   
  57. ” 启用鼠标  
  58. if has(‘mouse’)  
  59.   set mouse=a  
  60. endif  
  61.   
  62. “设置语法高亮  
  63. if &t_Co > 2 || has(“gui_running”)  
  64. syntax on  
  65. endif  
  66.   
  67.   
  68. “——————————————————————————-  
  69. ”           文本操作设置  
  70. “——————————————————————————-  
  71. “设置字体  
  72. set gfn=Courier:h15  
  73.   
  74. “设置自动缩进  
  75. “设置智能缩进  
  76. set tabstop=4  
  77. set shiftwidth=4  
  78. set softtabstop=4  
  79. set expandtab  
  80. set smarttab  
  81.   
  82.   
  83. “设置Tab键跟行尾符显示出来  
  84. set list lcs=tab:>-,trail:-  
  85.   
  86. “设置自动换行  
  87. set wrap  
  88.   
  89. “设置Insert模式和Normal模式下Left和Right箭头键左右移动可以超出当前行  
  90. set whichwrap=b,s,<,>,[,]  
  91.   
  92. “设置光标移动到屏幕之外时,自动向右滚动10个字符  
  93. set sidescroll=10  
  94.   
  95.   
  96.   
  97.   
  98.   
  99.   
  100. “设置使~命令成为操作符命令,从而使~命令可以跟光标移动命令组合使用  
  101. set tildeop  
  102.   
  103. “在Insert模式下,设置Backspace键如何删除光标前边的字符。这里三个值分别表示空白字符,分行符和插入模式之前的字符。  
  104. set backspace=indent,eol,start  
  105.   
  106. “定义键映射,不使用Q命令启动Ex模式,令Q命令完成gq命令的功能—即文本格式化。  
  107. map Q gq  
  108.   
  109. ” CTRL-U 在Insert模式下可以删除当前光标所在行所在列之前的所有字符.  Insert模式下,在Enter换行之后,可以立即使用CTRL-U命令删除换行符。  
  110. inoremap <C-U> <C-G>u<C-U>  
  111.   
  112. “使 “p” 命令在Visual模式下用拷贝的字符覆盖被选中的字符。  
  113. vnoremap p <Esc>:let current_reg = @”<CR>gvs<C-R>=current_reg<CR><Esc>  
  114.   
  115.   
  116. “——————————————————————————-  
  117. ”           搜索设置  
  118. “——————————————————————————-  
  119. “打开搜索高亮  
  120. set hlsearch  
  121.   
  122. “忽略大小写  
  123. set ignorecase  
  124.   
  125. “在查找时输入字符过程中就高亮显示匹配点。然后回车跳到该匹配点。  
  126. set incsearch     
  127.   
  128. “设置查找到文件尾部后折返开头或查找到开头后折返尾部。  
  129. set wrapscan  
  130.   
  131.   
  132.   
  133. “——————————————————————————-  
  134. ”           文件设置  
  135. “——————————————————————————-  
  136.   
  137. “设置当Vim覆盖一个文件的时候保持一个备份文件,但vms除外(vms会自动备份。备份文件的名称是在原来的文件名上加上 “~” 字符  
  138. if has(“vms”)  
  139.   set nobackup         
  140. else  
  141.   set backup          
  142. endif  
  143.   
  144.   
  145. if has(“autocmd”)  
  146.   “启用文件类型检测并启用文件类型相关插件,不同类型的文件需要不同的插件支持,同时加载缩进设置文件, 用于自动根据语言特点自动缩进.  
  147.   filetype plugin indent on  
  148.     
  149.   “将下面脚本命令放到自动命令分组里,这样可以很方便地删除这些命令.  
  150.   augroup vimrcEx  
  151.   au! “删除原来组的自动命令  
  152.   
  153.   “对于所有文件类型,设置textwidth为78个字符.  
  154.   autocmd FileType text setlocal textwidth=78  
  155.   
  156.   //vim启动后自动打开NerdTree  
  157.   autocmd vimenter * NERDTree  
  158.   autocmd vimenter * if !argc() | NERDTree | endif  
  159.   “设置关闭vim NerdTree窗口  
  160.   autocmd bufenter * if (winnr(“$”) == 1 && exists(“b:NERDTreeType”) && b:NERDTreeType == “primary”) | q | endif  
  161.   
  162.   “当打开编辑文件时总是自动执行该脚本,跳转到最后一个有效的光标位置Mark标记。当一个事件正在处理时,不执行该脚本命令。  
  163.   “行首的反斜杠用于把所有语句连接成一行,避免一行写得太长.   
  164.   autocmd BufReadPost *  
  165.     \ if line(“‘\””) > 1 && line(“‘\””) <= line(“$”) |  
  166.     \   exe “normal! g`\”” |  
  167.     \ endif  
  168.   
  169.   augroup END  
  170. else  
  171.   “Enter换行时总是使用与前一行的缩进等自动缩进。  
  172.   set autoindent  
  173.   “设置智能缩进  
  174.   set smartindent         
  175. endif    
  176.   
  177.   
  178. “编辑一个文件时,你所编辑的内容没保存的情况下,可以把现在的文件内容与编辑之前的文件内容进行对比,不同的内容将高亮显示  
  179. if !exists(“:DiffOrig”)  
  180.   command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis  
  181.           \ | wincmd p | diffthis  
  182. endif  
  183.   
  184.   
  185. “——————————————————————————-  
  186. ”           插件设置  
  187. “——————————————————————————-  
  188.   
  189. “插件相关的设置  
  190. “matchit 的字符匹配自定义设置  
  191. let b:match_words = ‘\<if\>:\<endif\>,’  
  192.         \ . ‘\<while\>:\<continue\>:\<break\>:\<endwhile\>’  
  193.   
  194.   
  195.   
  196. “Vundle 的配置  
  197.   
  198. filetype off                   ” required!  
  199.   
  200. set rtp+=~/.vim/bundle/vundle/  
  201. call vundle#rc()  
  202.   
  203. ” let Vundle manage Vundle  
  204. ” required!   
  205. “管理Vim插件   
  206. Bundle ‘gmarik/vundle’   
  207.   
  208.   
  209. ” My Bundles here:  
  210. ” original repos on github  
  211. “文本按字符对齐  
  212. Bundle ‘godlygeek/tabular’  
  213.   
  214. ” vim-scripts repos  
  215. “实现“begin”/“end”类似地匹配,~/.vimrc文件中添加自定义的设置:let b:match_words = ‘\<if\>:\<endif\>,’  
  216.         \ . ‘\<while\>:\<continue\>:\<break\>:\<endwhile\>’  
  217. Bundle ‘matchit.zip’       
  218. Bundle ‘moria’  
  219. Bundle ‘word_complete.vim’  
  220. Bundle ‘SuperTab’  
  221. Bundle ‘xptemplate’  
  222. Bundle ‘ctags.vim’  
  223. Bundle ‘taglist.vim’  
  224. Bundle ‘winmanager’  
  225. Bundle ‘Command-T’  
  226.   
  227. ” non github repos  
  228. “Bundle ‘git://git.wincent.com/command-t.git’  
  229. ” …  
  230. Bundle ‘https://github.com/scrooloose/nerdtree.git‘  
  231.    
  232. filetype plugin indent on     ” required!  
  233. ”  
  234. ” Brief help  
  235. ” :BundleList          – list configured bundles  
  236. ” :BundleInstall(!)    – install(update) bundles  
  237. ” :BundleSearch(!) foo – search(or refresh cache first) for foo  
  238. ” :BundleClean(!)      – confirm(or auto-approve) removal of unused bundles  
  239. ”  
  240. ” see :h vundle for more details or wiki for FAQ  
  241. ” NOTE: comments after Bundle command are not allowed..  

 

 

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

vim基本命令

 

          修改当前光标后的3个词,组合命令是c3w。

        (1)、光标的移动: 

          修改光标前的字符,ch.

       g~      
 修改选中的字符的大小写操作命令,原来大写的转换成小写,原来小写的转成大写。

       
 本文走马观花地带领大家快速浏览了MacVIm的一些基本功能,也相当于笔者的一个学习总结。实际上,上边谈到的每一个内容都可以独立写成一篇博客来介绍,对于Vim的更多具体用法还需要去进行更深入的学习。写这篇文章,笔者参考了很多资料,在这里罗列一些出来供读者参考。

        gq    
 选中文本格式化,文本拼接组合成句子或段落命令。在Normal模式和Visual模式下都能生效。

          yy命令拷贝一整行,快捷方式为Y。

         Select All 快捷键 command+a

         编辑菜单:

 

 

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

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

 

         
同样地,在Visual模式下,也可以用文本对象命令来选中更多的文本。比如使用aw选中当前的整个单词,再次使用则选中多一个单词。

安装新的插件:

[html] view
plain
copy

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

 

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

         Close   快捷键 Command+w

         
修改到指定字符之前一个字符,比如,修改到e之前的字符,cte.

 

       
 在r命令之前加入数字前缀,可以用一个字符替换当前光标后的多个字符。比如:3rp。但是例外的是,如果替换的字符是回车键,则只会用一个换行符替换多个字符。
       

          修改光标上的单词,包括空格,caw。

 

参考资料:

       
在这里稍微解释下几个文件的作用,/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 。

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

[html] view
plain
copy

        yy的等价快捷键为Y,作用拷贝一整行。

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

 

         (10)、命令次数:

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

 

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

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

       
 之前介绍过,在Normal模式下,输入v,进入Visual模式。这样,你对光标作任何移动操作,从当前光标位置到移动到的位置之间的文本都会高亮,此时输入操作命令,比如删除命令d,则高亮部分文本会被删除。

 

[html] view
plain
copy

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

 

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

        cc的等价快捷键为S,作用修改一整行。

 

          从当前光标位置修改到行尾,c$。

          可以在很多命令之前加上数字,表示执行该命令的次数。

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

          修改光标下的 字符,cl.

 

          向后查找当前光标上的单词,则可以输入”#“。想要向后查找当前光标的第2个单词,可以输入”2#“。

 

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

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

  1. :w  

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

         (17)、Visual模式

  1. Bundle ‘matchit.zip’  
  • J:把所有行连起来变成一行。
  • >或<操作,文本向左右Tab缩进。
  • =操作:选中文本自动缩进。          

          获取命令参数的帮助,比如:“:help -e”.

 

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

          “/^di”,只匹配行首。”/di$”只匹配行未。”/^di$“仅仅匹配包括”di“的行并不带空格。

5、最后贴出本人的~/.vimrc和~/.gvimrc配置:

[html] view
plain
copy

       
 从当前光标位置向前查找当前行上的某个指定字符的第一个字符,命令是f。比如:
查找w,fw。F也和f命令一样,但是查找方向相反。

 y$拷贝到行尾。

 

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

       
 从当前光标位置上的字符一直删除到指定的字符(包括指定字符),用df命令,比如,删除到r,命令为dfr。从当前光标位置删除到指定字符的前一个字符,用dt命令,比如:dtr。

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

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

         New  Tab 快捷键 Command+t

         dG
表示从当前光标位置一直删除到文件的末尾。dgg表示从当前光标位置一直删除到文件的开始。

[html] view
plain
copy

         Paste 快捷键 command+v 

       (7)、文本对象

         dl 的等价快捷键为 x,作用删除当前光标下的字符。

 

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

         
使用y(yank:抽出)操作符命令可直接把文字拷贝到寄存器中,然后用p命令粘贴到其他地方。比如:拷贝4个单词,4yw(包括了单词后面的空格,用ye则不包括单词后的空格)。

          输入”/di“,也可能查找到单词”media“。如果想限定di只匹配单词开头,可以输入”/<di“。如果只想查找以di结尾的单词,则可以输入”/di>“。如果只想查找完整的单词”di”,输入”/<di>“。注意,”*“和”#“命令也是匹配整个单词查找的,如果想要部分匹配,输入”g*“和”g#“。