4. 安装
4.1. win访问github
我们在linux下安装vimplus 请忽略该章节。
确保自己电脑能够访问github,进入
http://tool.chinaz.com/dns/地址并查询github.com
修改自己的host文件

修改内容如下:

cmd终端下执行
ipconfig/flushdns命令刷新dns
这样就可以访问
github网站了
4.2. ubuntu访问github
查询地址
nslookup github.global.ssl.fastly.net
nslookup github.com
执行结果如下:

修改host

重启网络和系統
sudo /etc/init.d/networking restart sudo reboot
4.3. vimplus安裝
git clone https://github.com/chxuan/vimplus.git ~/.vimplus
cd ~/.vimplus
./install.sh
执行过程如下:

4.4. vimplus更新
cd ~/.vimplus
./update.sh
不过一般情况下由于要访问github,不科学上网的话,会更新失败。所以这里可以使用我下载好的plugged.zip插件直接解压放到~/.vim下即可,我解压后结果如下

plugged.zip下载地址如下:
链接:https://pan.baidu.com/s/1dJ1DU0VH0hBFuDkUnfJVNA 提取码:k7vy
5. 配置文件说明
~/.vimrc:为vimplus默认配置~/.vimrc.custom.plugins:用户自定义插件列表~/.vimrc.custom.config:为用户自定义配置文件。一般性配置可放入该文件,可覆盖~/.vimrc里面的配置
6. 启动vim
可能遇见问题
如下
YouCompleteMe代码补全插件没有安装好导致
修复如下:
cd ~/.vim/plugged/YouCompleteMe install.py防止乱码修改终端字体

打开vim 提示下面的错误
startify: Can't read viminfo file. Read :help startify-faq-02
修复如下:
cd ~ sudo chmod 777 .viminfo vim .viminfo :wq
todo
7. 插件列表
| 插件 | 说明 |
|---|---|
| cpp-mode | 提供生成函数实现、函数声明/实现跳转、.h .cpp切换等功能 |
| vim-edit | 方便的文本编辑插件 |
| change-colorscheme | 随心所欲切换主题 |
| prepare-code | 新建文件时,生成预定义代码片段 |
| vim-buffer | vim缓存操作 |
| vimplus-startify | vimplus开始页面(修改自mhinz/vim-startify) |
| tagbar | 使用preservim/tagbar的最新版本,taglist的替代品,显示类/方法/变量 |
| vim-plug | 比Vundle下载更快的插件管理软件 |
| YouCompleteMe | 史上最强大的基于语义的自动补全插件,支持C/C++、C#、Python、PHP等语言 |
| NerdTree | 代码资源管理器 |
| vim-nerdtree-syntax-highlight | NerdTree文件类型高亮 |
| nerdtree-git-plugin | NerdTree显示git状态 |
| vim-devicons | 显示文件类型图标 |
| Airline | 可以取代powerline的状态栏美化插件 |
| auto-pairs | 自动补全引号、圆括号、花括号等 |
| LeaderF | 比ctrlp更强大的文件的模糊搜索工具 |
| ack | 强大的文本搜索工具 |
| vim-surround | 自动增加、替换配对符的插件 |
| vim-commentary | 快速注释代码插件 |
| vim-repeat | 重复上一次操作 |
| vim-endwise | if/end/endif/endfunction补全 |
| tabular | 代码、注释、表格对齐 |
| vim-easymotion | 强大的光标快速移动工具,强大到颠覆你的插件观 |
| incsearch.vim | 模糊字符搜索插件 |
| vim-fugitive | 集成Git |
| gv | 显示git提交记录 |
| vim-slash | 优化搜索,移动光标后清除高亮 |
| echodoc | 补全函数时在命令栏显示函数签名 |
| vim-smooth-scroll | 让翻页更顺畅 |
| clever-f.vim | 强化f和F键 |
8. 快捷键
以下是部分快捷键,可通过vimplus的,h命令查看vimplus帮助文档。
| 快捷键 | 说明 |
|---|---|
, |
Leader Key |
n |
打开/关闭代码资源管理器 |
t |
打开/关闭函数列表 |
a |
.h .cpp 文件切换 仅仅是同名的文件比如 a.c 和a.h |
u |
转到函数声明 |
U |
转到函数实现 |
u |
转到变量声明 |
o |
打开include文件 先把光标移动到需要打开的头文件名字上 然后在执行 |
y |
拷贝函数声明 |
p |
生成函数实现 |
w |
单词跳转 |
f |
搜索~目录下的文件 |
F |
搜索当前目录下的文本 |
g |
显示git仓库提交记录 |
G |
显示当前文件提交记录 |
gg |
显示当前文件在某个commit下的完整内容 |
ff |
语法错误自动修复(FixIt) |
| `` | 切换到上一个buffer |
| `` | 切换到下一个buffer |
d |
删除当前buffer |
D |
删除当前buffer外的所有buffer |
vim |
运行vim编辑器时,默认启动开始页面 |
| `` | 显示语法错误提示窗口 |
| `` | 显示上一主题 |
| `` | 显示下一主题 |
l |
按竖线对齐 |
= |
按等号对齐 |
Ya |
复制行文本到字母a |
Da |
剪切行文本到字母a |
Ca |
改写行文本到字母a |
rr |
替换文本 |
r |
全局替换,目前只支持单个文件 |
rev |
翻转当前光标下的单词或使用V模式选择的文本 |
gcc |
注释代码 |
gcap |
注释段落 |
vif |
选中函数内容 |
dif |
删除函数内容 |
cif |
改写函数内容 |
vaf |
选中函数内容(包括函数名 花括号) |
daf |
删除函数内容(包括函数名 花括号) |
caf |
改写函数内容(包括函数名 花括号) |
fa |
查找字母a,然后再按f键查找下一个 |
e |
快速编辑~/.vimrc文件 |
s |
重新加载~/.vimrc文件 |
vp |
快速编辑~/.vimrc.custom.plugins文件 |
vc |
快速编辑~/.vimrc.custom.config文件 |
h |
打开vimplus帮助文档 |
H |
打开当前光标所在单词的vim帮助文档 |
t |
生成try-catch代码块 |
y |
复制当前选中到系统剪切板 |
i |
安装插件 |
u |
更新插件 |
c |
删除插件 |
9. 常用使用命令
打开文件夹
下面
progect_dir代表我们的工程目录cd progect_dir vim # 在normal模式下 输入下面命令即可显示工程目录 再次输入 就关闭工程目录 逗号即是 leader key 关于leader key可以在./vimrc 里面配置 ,n

多窗口间的切换
normal模式下执行
ctrl w h 或者 ctrl w ← # 向左切换 ctrl w j 或者 ctrl w ↑ # 向上切换 ctrl w k 或者 ctrl w ↓ # 向下切换 ctrl w l 或者 ctrl w → # 向右切换 ctrl w t # 跳到最顶端窗口 ctrl w b # 跳到最低端窗口 ctrl ww # 依次往下个窗口切换,不常用这个命令 # ctrl 是键盘的ctrl键,不是要输入ctrl字符 # h l 对应 左方向键, 右方向键 # j k 对应 下方向键, 正方向键

缓存区
如果打开多个文件,使用ctrl p/n切换的时候就比较慢,可以使用
:ls bn 來切換到自己想切换的文件 n 是第几个
如下图所示:

image-20220822111231301关闭打开的标签
比如现在打开了多个文件,现在想删除掉一个
# 刪除当前的缓存区 ,d # 刪除 除了当前文件以外的其他文件 ,D
如果打开多个文件间的切换normal 模式下執行
ctrl p:往前切标签ctrl n:往后切标签ctrl 6:当前标签和上次的标签来回切

显示当前文件的函数列表,定义的变量,宏等信息
有时候需要查看一个文件的函数列表输入下面命令即可
,t

在.c文件下需要打开某个包含的头文件
,o

调整窗口大小
如下图所示,左边的窗口太小了,需要调大点,操作如下:

先映射快捷键 注意:只需修改一次即可
# 快速修改~/.vimrc 文件 ,e #末尾添加 下面的快捷键映射,默认调整1 # shift ↑ ↓ ← → nnoremap <S-Up> :resize -1 nnoremap <S-Down> :resize +1 nnoremap <S-Left> :vertical resize -1 nnoremap <S-Right> :vertical resize +1
修改后结果如下:

执行下面的命令
shift → # 命令行窗口修改要拉宽的大小回撤即可,如下 我要放大 +60 也就是 增加60列 当然也可以 -60 就是缩小60列

#同理想往上或者往下 调都可以,只需把shift 后面的箭头换了即可 shift ↑ ↓ ← →
文件的保存和退出
#命令 #功能 :wq #当前的buffer写入文件保存 并退出 :w #当前的buffer写入文件保存 但不退出 :q #退出当前buffer 如果buffer修改了未保存会退出失败 :q! #强制退出当前buffer,不保存 :qa! #强制退出所有buffer,且不保存 :wa! #保存所有的buffer,不退出
为当前文件新建一个窗口
有时候我们需要分屏操作,分屏后的窗口内存为当前buffer的内容输入下面的命令
# 水平分屏效果 :sp #垂直分屏 :vs #想要关闭当前窗口的时候 ctrl w c
光标移动操作
ctrl o上一个ctrl i下一个H跳到屏幕顶端M跳到屏幕中间L跳到屏幕的底端:n跳到第n行w跳到下个单词的开始(标点或者空格分开的单词)W跳到下个单词的开始(空格分开的单词)e跳到下个单词的尾部(标点或者空格分开的单词)E跳到下个单词尾部( 空格分开的单词)b跳到上个单词的头部(标点或者空格分开的单词)B跳到上个单词的头部(空格分开的单词)ge跳到上个单词的尾部gg跳到文件头G跳到文件尾fx跳到下个为x的字符Fx跳到上个为x的字符[[跳到函数开头]]跳到函数结尾
查找
当前打开的文件中查找
/要查找的字符串 # 然后回车 n #向后查找 N #向前查找 #搜索前执行下面命令 忽略大小写 默认是忽略的 :set ignorecase
如果想再单词下面直接查找,把光标移动到单词上
* 往下搜 # 往上搜
环形搜索
:set nowrapscan 禁用环形搜索 :set wrapscan 启用环形搜索
光标移动到字符串下,输入/ 然后输入ctrl r 然后 ctrl w 那么光标处的字符串就被复制了且 在/下面也有

搜索工程目录下的文件
,f 输入你要查找的文件名 ctrl j 或者ctrl k 向上或者向下翻 esc 退出查找

搜索工程目录下文本
,F 输入你要查找的文本内容 ctrl w c 关闭搜索的窗口

复制与粘贴
常用的命令如下: y 在使用v模式选定了某一块的时候,复制选定块到缓冲区用; yy 复制整行(nyy复制n行,n为数字); y^ 复制当前到行头的内容; y$ 复制当前到行尾的内容; yw 复制一个word (nyw或者ynw,复制n个word,n为数字); yG 复制至档尾(nyG或者ynG,复制到第n行,例如1yG或者y1G,复制到档尾);
剪切的命令是d 即delete,d与y命令基本类似,所以两个命令用法一样,包括含有数字的用法. d 剪切选定块到缓冲区; dd 剪切整行 d^ 剪切至行首 d$ 剪切至行尾 dw 剪切一个word dG 剪切至档尾
粘贴的命令式p 即put(放下) p 小写p代表贴至游标后(下),因为游标是在具体字符的位置上,所以实际是在该字符的后面 P 大写P代表贴至游标前(上) 整行的复制粘贴在游标的上(下)一行,非整行的复制则是粘贴在游标的前(后)
注: 在正则表达式中,^表示匹配字符串的开始位置,$表示匹配字符串的结束位置。 命令前面加数字表示重复的次数,加字母表示使用的缓冲区名称。使用英文句号”.”可以重复上一个命令。 在复制粘贴时,另一组常用的命令是u(撤销操作),U(撤销某一行最近所有修改),Ctrl+R(重做),这些功能主要是vim中的,vi中略有差别