奥门威尼斯网址Ubuntu16.04 IDE: 用Vim逐步打造一个IDE

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

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

原文出处: 小弟调调   

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

奥门威尼斯网址 1

目前打造完成的IDE主要有:
terminator+Bundle+NERDtree+YCF(youcompleteme)+UltiSnips+新创建文件自动补充注释和作者,版权信息等

目前加强了一下Ubuntu
16.04终端,代码提示和树形文件管理:

目前打造完成的IDE主要有:
terminator+Bundle+NERDtree+YCF(youcompleteme)+UltiSnips+新创建文件自动补充注释和作者,版权信息等

前端开发IDE工具

  • WebStorm
  • Visual Studio Code
  • Sulime Text
  • Atom

安装

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

Shell

$ git clone ~/.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

1,当任务比较多的时候,如果在Ubuntu下切换多个终端,会比较麻烦,这里我找到一个比较好的终端(terminator)

奥门威尼斯网址 2

WebStorm

WebStorm下载地址:

  • ws下载渠道1
  • ws破解码

由于ws需要破解,所以大家尝试使用上面的几个ws下载渠道进行下载并破解安装

查看配置位置

Shell

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

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

 

sudo apt-get install terminator

 

Visual Studio Code

vscode
下载地

插件管理

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

Shell

curl -fLo ~/.vim/autoload/plug.vim –create-dirs \

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

1,当任务比较多的时候,如果在Ubuntu下切换多个终端,会比较麻烦,这里我找到一个比较好的终端(terminator)

安装完之后的效果:

1,当任务比较多的时候,如果在Ubuntu下切换多个终端,会比较麻烦,这里我找到一个比较好的终端(terminator)

Sulime Text

Sulime下载地址

安装插件

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

Shell

:PlugInstall

1
:PlugInstall

sudo apt-get install terminator

奥门威尼斯网址 4

sudo apt-get install terminator

Atom

atom下载地址

前端开发IDE工具众多,这个选择使用哪一个工具来开发根据个人的喜好就行,不过个人推荐使用WS,虽然WS没有sublime、vscode那么轻量级,但是使用起来确实能给开发带来诸多的便捷

更新插件

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

Vim

:PlugUpdate

1
:PlugUpdate

安装完之后的效果:

右键可以分割窗口或者新建tab, preference可以定制外观

安装完之后的效果:

福利时间

  • 作者React
    Native开源项目OneM地址(按照企业开发标准搭建框架完成开发的):https://github.com/guangqiang-liu/OneM:欢迎小伙伴们
    star
  • 作者简书主页:包含50多篇RN开发相关的技术文章http://www.jianshu.com/u/023338566ca5
    欢迎小伙伴们:多多关注多多点赞
  • 作者React Native QQ技术交流群:620792950 欢迎小伙伴进群交流学习
  • 友情提示:在开发中有遇到RN相关的技术问题,欢迎小伙伴加入交流群(620792950),在群里提问、互相交流学习。交流群也定期更新最新的RN学习资料给大家,谢谢大家支持!

卸载插件

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

Vim

:PlugClean

1
:PlugClean

奥门威尼斯网址 5

奥门威尼斯网址 6

奥门威尼斯网址 5

启动Vim

Shell

$ vim

1
$ vim

右键可以分割窗口或者新建tab, preference可以定制外观

2,安装YouCompleteMe

右键可以分割窗口或者新建tab, preference可以定制外观

常用快捷键

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

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

奥门威尼斯网址 8

bundle是一个插件安装管理器,安装完成之后,就会在家目录下面的.vim目录生成bundle目录及相关配置

奥门威尼斯网址 8

基础使用

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

2,安装YouCompleteMe

我采用的是git安装,bundle安装太慢了,看不见进度

2,安装YouCompleteMe

快捷键通配符

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

Vim

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

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

bundle是一个插件安装管理器,安装完成之后,就会在家目录下面的.vim目录生成bundle目录及相关配置

在家目录下,cd .vim/bundle/

bundle是一个插件安装管理器,安装完成之后,就会在家目录下面的.vim目录生成bundle目录及相关配置

插入命令

Vim

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

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

我采用的是git安装,bundle安装太慢了,看不见进度

下载YouCompleteMe:

我采用的是git安装,bundle安装太慢了,看不见进度

删除命令

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

在家目录下,cd .vim/bundle/

git clone –recursive

在家目录下,cd .vim/bundle/

定位命令

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

下载YouCompleteMe:

以下为主要安装命令和需要安装的东西:

下载YouCompleteMe:

复制剪切

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次

git clone –recursive

cd YouCompleteMe/

git clone –recursive

简单排版

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

以下为主要安装命令和需要安装的东西:

sudo apt-get install llvm-3.9 clang-3.9 libclang-3.9-dev
libboost-all-dev
sudo apt-get install python-dev python3-dev
mkdir ~/.ycm_build
cd ~/.ycm_build

以下为主要安装命令和需要安装的东西:

保存退出

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

cd YouCompleteMe/

cmake -G “Unix Makefiles” .
~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

cd YouCompleteMe/

整页翻页

Vim

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

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

sudo apt-get install llvm-3.9 clang-3.9 libclang-3.9-dev
libboost-all-dev
sudo apt-get install python-dev python3-dev
mkdir ~/.ycm_build
cd ~/.ycm_build

cmake -G “Unix Makefiles” -DUSE_SYSTEM_BOOST=ON
-DUSE_SYSTEM_LIBCLANG=ON .
~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

sudo apt-get install llvm-3.9 clang-3.9 libclang-3.9-dev
libboost-all-dev
sudo apt-get install python-dev python3-dev
mkdir ~/.ycm_build
cd ~/.ycm_build

替换

cmake -G “Unix Makefiles” .
~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

cmake –build . –target ycm_core –config Release

cmake -G “Unix Makefiles” .
~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

替换取消

Vim

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

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

cmake -G “Unix Makefiles” -DUSE_SYSTEM_BOOST=ON
-DUSE_SYSTEM_LIBCLANG=ON .
~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

cp
~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py
~/.vim/

cmake -G “Unix Makefiles” -DUSE_SYSTEM_BOOST=ON
-DUSE_SYSTEM_LIBCLANG=ON .
~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

快捷替换

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

cmake –build . –target ycm_core –config Release

奥门威尼斯网址 10

cmake –build . –target ycm_core –config Release

精确替换

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

cp
~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py
~/.vim/

 

cp
~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py
~/.vim/

开关注释

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

奥门威尼斯网址 11

 

奥门威尼斯网址 11

工程文件菜单

自定义快捷键

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

 

参考资料:

 

切割窗口

Vim

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

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

 

 

Tab操作

参考资料:

参考资料:

多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操作

便捷操作得益于插件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 地址生成引用文本

3,用bundle安装nerdtree

搜索查找

 

安装:

 

文件搜索

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

Vim

;t # 启动搜索文件

1
;t # 启动搜索文件

3,用bundle安装nerdtree

  在.vimrc中,写入需要安装的插件

3,用bundle安装nerdtree

搜索文本内容

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

安装:

奥门威尼斯网址 13

安装:

快速移动

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

Shell

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

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

  在.vimrc中,写入需要安装的插件

打开一个vim, 运行:BundleInstall

  在.vimrc中,写入需要安装的插件

插件说明

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

奥门威尼斯网址 14

 

奥门威尼斯网址 14

插件管理工具

  • junegunn/vim-plug
  • VundleVim/Vundle.vim

打开一个vim, 运行:BundleInstall

使用

打开一个vim, 运行:BundleInstall

主题风格

  • vim-colors-solarized
    主题风格素雅 solarized
  • molokai 主题风格多彩 molokai
  • phd 主题风格复古 phd

 补充2个小技巧:

  1、在linux命令行界面,用vim打开一个文件。

 补充2个小技巧:

使用界面

  • Mango A nice color
    scheme
  • VimAirline
    美化状态栏偏好设置
  • vim-powerline
    美化状态栏
  • vim-airline
    美化状态栏和配置
  • vim-airline-themes
    airline主题

1,shift + R可以自动刷新文件列表

  2、输入  :NERDTree ,回车

1,shift + R可以自动刷新文件列表

管理项目

  • NERDTree Manage your
    project files
  • VimFugitive Git 集成
  • VimGitGutter Git
    集成,强烈推荐!
  • EditorconfigVim
    Shared coding conventions
  • command-t 文件搜索
  • vim-signature
    书签可视化的插件
  • BOOKMARKS–Mark-and-Highlight-Full-Lines
    它可以让书签行高亮
  • tagbar 方法地图导航
  • indexer.tar.gz
    自动生成标签并引入

    • DfrankUtil
      上面插件,依赖这个插件
    • vimprj
      上面插件,依赖这个插件
  • ctrlsf.vim
    上下文插件,例如搜素到关键字,中间缩略,展示一段上下文
  • vim-multiple-cursors
    多光标编辑功能

2,在NERDTree树形管理文件中,按ma可以创建文件或者目录

  3、进入当前目录的树形界面,通过小键盘上下键,能移动选中的目录或文件

2,在NERDTree树形管理文件中,按ma可以创建文件或者目录

代码书写

  • NERDCommenter
    注释更容易
  • DrawIt ASCII art 风格的注释
  • VimTrailingWhitespace
    突出尾随空格
  • Syntastic 语法检查
  • VimEasyAlign
    调整部分代码
  • VimMultipleCursors
    Write on multiple lines easily
  • VimJsBeautify Reformat
    JavaScript, HTML and JSON files
  • VimYankStack
    Iterate over yanked stack on paste
  • VimSurround Quoting and
    parenthesizing
  • YouCompleteMe
    键而全的、支持模糊搜索的、高速补全的插件
  • VimForTern Smart
    JavaScript autocompletion
  • VimNode Navigate through node.js
    code/modules
  • VimLint Linter used by
    syntastic for VimL
  • VimLParser VimL parser
    (required by VimLint)
  • emmet-vim
    提高HTML和CSS的工作流
  • vim-cpp-enhanced-highlight
    C++ 语法高亮支持
  • vim-indent-guides
    相同缩进的代码关联起来
  • vim-fswitch
    接口文件(MyClass.h)与实现文件(MyClass.cpp)快捷切换的插件
  • MiniBufExplorer
    显示多个 buffer 对应的 window
  • wildfire.vim 快捷键选中
    <>[]{} 中间的内容
  • gundo.vim
    让你有机会撤销最近一步或多步操作
  • vim-easymotion
    快速移动,两次 <leader> 作为前缀键
  • Shougo/neocomplete.vim
    强大的自动补全插件
  • vim-instant-markdown
    编辑 markdown 文档,自动开启 firefox 为你显示 markdown 最终效果
  • fcitx.vim 中/英输入平滑切换
  • othree/xml.vim
    中/提供快速编写xml/html的能力,如标签自动闭合等
  • pangloss/vim-javascript
    提供js代码的智能缩进,仅使用了他的indent功能

使用

  4、ctr+w+h  光标focus左侧树形目录,ctrl+w+l
光标focus右侧文件显示窗口。多次摁 ctrl+w,光标自动在左右侧窗口切换

使用

代码阅读

  • 语法高亮
    • vim-polyglot
      支持常见的语法高亮
    • VimJson JSON 高亮和隐藏引号
    • YaJS JavaScript 语法 (ES5
      and ES6)
    • vim-css3-syntax
      CSS3 高亮,包括stylus,Less,Sass
    • vim-css-color
      css高亮颜色
    • gko/vim-coloresque
      css高亮颜色
    • ScssSyntax SCSS
      syntax
    • HTML5 HTML5 syntax
    • Stylus Stylus 代码高亮
  • JavaScriptLibrariesSyntax
    语法高亮的知名的JS库
  • ultisnips 模板补全插件
  • vim-protodef
    根据类声明自动生成类实现的代码框架

  1、在linux命令行界面,用vim打开一个文件。

  5、输入:q回车,关闭光标所在窗口

  1、在linux命令行界面,用vim打开一个文件。

参考资料

  • vim 大冒险:在游戏中学习 vim
  • VimScript学会如何自定义Vim编辑器
  • css-color stopped working after updating Vim to
    7.4

  2、输入  :NERDTree ,回车

 奥门威尼斯网址 16

  2、输入  :NERDTree ,回车

其它人的vimrc配置

  • luofei614/vim-plug
  • yangyangwithgnu/use_vim_as_ide

    2 赞 3 收藏
    评论

奥门威尼斯网址 17

  3、进入当前目录的树形界面,通过小键盘上下键,能移动选中的目录或文件

Vim入门基础知识集锦 
http://www.linuxidc.com/Linux/2017-02/140903.htm

  3、进入当前目录的树形界面,通过小键盘上下键,能移动选中的目录或文件

  4、ctr+w+h  光标focus左侧树形目录,ctrl+w+l
光标focus右侧文件显示窗口。多次摁 ctrl+w,光标自动在左右侧窗口切换

Vim入门基础教程
http://www.linuxidc.com/Linux/2017-02/140279.htm

  4、ctr+w+h  光标focus左侧树形目录,ctrl+w+l
光标focus右侧文件显示窗口。多次摁 ctrl+w,光标自动在左右侧窗口切换

  5、输入:q回车,关闭光标所在窗口

把Vim打造成优秀的C++ IDE 
http://www.linuxidc.com/Linux/2016-06/132262.htm

  5、输入:q回车,关闭光标所在窗口

 奥门威尼斯网址 18

Ubuntu 14.04升级Vim7.4到8.0 
http://www.linuxidc.com/Linux/2016-11/136816.htm

 奥门威尼斯网址 18

 

Vim安装youcompleteme自动补全插件 
http://www.linuxidc.com/Linux/2016-11/137665.htm

 

安装Vim 插件——UltiSnips 配置代码片段( Bundle方式 )

Linux Vim编辑器使用简单讲解 
http://www.linuxidc.com/Linux/2016-12/138930.htm

安装Vim 插件——UltiSnips 配置代码片段( Bundle方式 )

1.安装,在~/.vimrc中添加UltiSnips plugin.

Vim文本编辑器 
http://www.linuxidc.com/Linux/2017-03/142275.htm

1.安装,在~/.vimrc中添加UltiSnips plugin.

Plugin 'SirVer/ultisnips'
Plugin 'honza/vim-snippets'

Vim安装与配置进阶版
http://www.linuxidc.com/Linux/2017-03/141724.htm

Plugin 'SirVer/ultisnips'
Plugin 'honza/vim-snippets'

2,然后在VIM的末行模式,键入命令 执行插件的安装

Vim编辑器使用教程 
http://www.linuxidc.com/Linux/2017-07/145885.htm

2,然后在VIM的末行模式,键入命令 执行插件的安装

:PluginInstall

Ubuntu 16.04 Vim YouCompleteMe自动补全的安装配置与使用 
http://www.linuxidc.com/Linux/2017-02/141088.htm

:PluginInstall

3.配置的参考代码在 ~/.vim/bundle/vim-snippets 

Linux文本编辑器Vim基础教程 
http://www.linuxidc.com/Linux/2017-09/146930.htm

3.配置的参考代码在 ~/.vim/bundle/vim-snippets 

cp ~/.vim/bundle/vim-snippets/UltiSnips/c.snippets  ~/.vim/UltiSnips/

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149878.htm

cp ~/.vim/bundle/vim-snippets/UltiSnips/c.snippets  ~/.vim/UltiSnips/

 

奥门威尼斯网址 20

 

YCM和Ultisnips按键冲突解决方案(只使用TAB键 )

1,添加功能函数到.vimrc 

奥门威尼斯网址 21奥门威尼斯网址 22

 1 function! g:UltiSnips_Complete()
 2   call UltiSnips#ExpandSnippet()
 3   if g:ulti_expand_res == 0
 4     if pumvisible()
 5       return "\<C-n>"
 6     else
 7       call UltiSnips#JumpForwards()
 8       if g:ulti_jump_forwards_res == 0
 9         return "\<TAB>"
10       endif
11     endif
12   endif
13   return ""
14 endfunction
15 
16 function! g:UltiSnips_Reverse()
17   call UltiSnips#JumpBackwards()
18   if g:ulti_jump_backwards_res == 0
19     return "\<C-P>"
20   endif
21 
22   return ""
23 endfunction
24 
25 
26 if !exists("g:UltiSnipsJumpForwardTrigger")
27   let g:UltiSnipsJumpForwardTrigger = "<tab>"
28 endif
29 if !exists("g:UltiSnipsJumpBackwardTrigger")
30   let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
31 endif

View Code

2,为上面的函数创建一个自动BufEnter

奥门威尼斯网址 23奥门威尼斯网址 24

1 au InsertEnter * exec "inoremap <silent> " . g:UltiSnipsExpandTrigger     . " <C-R>=g:UltiSnips_Complete()<cr>"
2 au InsertEnter * exec "inoremap <silent> " .     g:UltiSnipsJumpBackwardTrigger . " <C-R>=g:UltiSnips_Reverse()<cr>"

View Code

 

YCM和Ultisnips按键冲突解决方案(只使用TAB键 )

1,添加功能函数到.vimrc 

奥门威尼斯网址 25奥门威尼斯网址 26

 1 function! g:UltiSnips_Complete()
 2   call UltiSnips#ExpandSnippet()
 3   if g:ulti_expand_res == 0
 4     if pumvisible()
 5       return "\<C-n>"
 6     else
 7       call UltiSnips#JumpForwards()
 8       if g:ulti_jump_forwards_res == 0
 9         return "\<TAB>"
10       endif
11     endif
12   endif
13   return ""
14 endfunction
15 
16 function! g:UltiSnips_Reverse()
17   call UltiSnips#JumpBackwards()
18   if g:ulti_jump_backwards_res == 0
19     return "\<C-P>"
20   endif
21 
22   return ""
23 endfunction
24 
25 
26 if !exists("g:UltiSnipsJumpForwardTrigger")
27   let g:UltiSnipsJumpForwardTrigger = "<tab>"
28 endif
29 if !exists("g:UltiSnipsJumpBackwardTrigger")
30   let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
31 endif

View Code

2,为上面的函数创建一个自动BufEnter

奥门威尼斯网址 27奥门威尼斯网址 28

1 au InsertEnter * exec "inoremap <silent> " . g:UltiSnipsExpandTrigger     . " <C-R>=g:UltiSnips_Complete()<cr>"
2 au InsertEnter * exec "inoremap <silent> " .     g:UltiSnipsJumpBackwardTrigger . " <C-R>=g:UltiSnips_Reverse()<cr>"

View Code

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注