4. 安装

4.1. win访问github

我们在linux下安装vimplus 请忽略该章节。

  1. 确保自己电脑能够访问github,进入http://tool.chinaz.com/dns/地址并查询github.com

    ../../../../_images/image-20220821193806021.png

  2. 修改自己的host文件

    ../../../../_images/image-20220821193942018.png

    修改内容如下:

    ../../../../_images/image-20220821194026820.png

  3. cmd终端下执行ipconfig/flushdns命令刷新dns

    ../../../../_images/image-20220821194129154.png

  4. 这样就可以访问github网站了

4.2. ubuntu访问github

  1. 查询地址

    • nslookup github.global.ssl.fastly.net

    • nslookup github.com

    执行结果如下:

    ../../../../_images/image-20220821195650513.png

  2. 修改host

    ../../../../_images/image-20220821195543929.png

  3. 重启网络和系統

    sudo /etc/init.d/networking restart
    sudo reboot
    

4.3. vimplus安裝

git clone https://github.com/chxuan/vimplus.git ~/.vimplus
cd ~/.vimplus
./install.sh

执行过程如下:

../../../../_images/image-20220821191404851.png

4.4. vimplus更新

cd ~/.vimplus
./update.sh

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

../../../../_images/image-20220821213312754.png

plugged.zip下载地址如下:

链接:https://pan.baidu.com/s/1dJ1DU0VH0hBFuDkUnfJVNA 提取码:k7vy

5. 配置文件说明

  • ~/.vimrc:为vimplus默认配置

  • ~/.vimrc.custom.plugins:用户自定义插件列表

  • ~/.vimrc.custom.config:为用户自定义配置文件。一般性配置可放入该文件,可覆盖~/.vimrc里面的配置

6. 启动vim

可能遇见问题

  1. 如下 YouCompleteMe 代码补全插件没有安装好导致

    ../../../../_images/image-20220821202647032.png

    修复如下:

    cd ~/.vim/plugged/YouCompleteMe
    install.py
    
  2. 防止乱码修改终端字体

    ../../../../_images/image-20220821203345526.png

  3. 打开vim 提示下面的错误

    startify: Can't read viminfo file.  Read :help startify-faq-02
    

    修复如下:

    cd ~
    sudo chmod 777 .viminfo
    vim .viminfo
    :wq
    
  4. 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. 常用使用命令

  1. 打开文件夹

    下面progect_dir代表我们的工程目录

    cd progect_dir
    vim
    # 在normal模式下 输入下面命令即可显示工程目录 再次输入 就关闭工程目录 逗号即是 leader key 关于leader key可以在./vimrc 里面配置
    
    ,n
    

    ../../../../_images/image-20220821220155351.png

  2. 多窗口间的切换

    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 对应 下方向键, 正方向键 
    

    ../../../../_images/image-20220821220623241.png

  3. 缓存区

    如果打开多个文件,使用ctrl p/n切换的时候就比较慢,可以使用

    :ls
    bn
    來切換到自己想切换的文件 n 是第几个
    

    如下图所示:

    ../../../../_images/image-20220822111151623.png

    ../../../../_images/image-20220822111231301.pngimage-20220822111231301

  4. 关闭打开的标签

    比如现在打开了多个文件,现在想删除掉一个

    # 刪除当前的缓存区
    ,d
    # 刪除 除了当前文件以外的其他文件
    ,D
    
  5. 如果打开多个文件间的切换normal 模式下執行

    • ctrl p:往前切标签

    • ctrl n:往后切标签

    • ctrl 6:当前标签和上次的标签来回切

    ../../../../_images/image-20220821225323336.png

  6. 显示当前文件的函数列表,定义的变量,宏等信息

    有时候需要查看一个文件的函数列表输入下面命令即可

    ,t
    

    ../../../../_images/image-20220821225634989.png

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

    ,o
    

    ../../../../_images/image-20220822091512028.png

  8. 调整窗口大小

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

    ../../../../_images/image-20220822094312423.png

    • 先映射快捷键 注意:只需修改一次即可

      # 快速修改~/.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 
      

      修改后结果如下:

      ../../../../_images/image-20220822094811625.png

    • 执行下面的命令

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

      ../../../../_images/image-20220822102104534.png

    #同理想往上或者往下 调都可以,只需把shift 后面的箭头换了即可
    shift ↑ ↓ ← →
    
  9. 文件的保存和退出

    #命令	   #功能
    :wq		#当前的buffer写入文件保存 并退出
    :w		#当前的buffer写入文件保存 但不退出
    :q		#退出当前buffer 如果buffer修改了未保存会退出失败
    :q!		#强制退出当前buffer,不保存
    
    :qa!   #强制退出所有buffer,且不保存
    :wa!   #保存所有的buffer,不退出
    
  10. 为当前文件新建一个窗口

    有时候我们需要分屏操作,分屏后的窗口内存为当前buffer的内容输入下面的命令

    # 水平分屏效果
    :sp
    #垂直分屏
    :vs
    
    #想要关闭当前窗口的时候
    ctrl w c
    
  11. 光标移动操作

    • ctrl o上一个

    • ctrl i下一个

    • H跳到屏幕顶端

    • M跳到屏幕中间

    • L跳到屏幕的底端

    • :n 跳到第n行

    • w跳到下个单词的开始(标点或者空格分开的单词)

    • W跳到下个单词的开始(空格分开的单词)

    • e跳到下个单词的尾部(标点或者空格分开的单词)

    • E跳到下个单词尾部( 空格分开的单词)

    • b跳到上个单词的头部(标点或者空格分开的单词)

    • B跳到上个单词的头部(空格分开的单词)

    • ge跳到上个单词的尾部

    • gg跳到文件头

    • G跳到文件尾

    • fx跳到下个为x的字符

    • Fx跳到上个为x的字符

    • [[跳到函数开头

    • ]]跳到函数结尾

  12. 查找

    • 当前打开的文件中查找

      /要查找的字符串    # 然后回车
      n  #向后查找
      N  #向前查找
      
      #搜索前执行下面命令 忽略大小写 默认是忽略的
      :set ignorecase
      
    • 如果想再单词下面直接查找,把光标移动到单词上

      *  往下搜
      #  往上搜
      
    • 环形搜索

      :set nowrapscan  禁用环形搜索
      :set wrapscan    启用环形搜索
      
    • 光标移动到字符串下,输入/ 然后输入ctrl r 然后 ctrl w 那么光标处的字符串就被复制了且 在/下面也有

      ../../../../_images/image-20220822164403586.png

    • 搜索工程目录下的文件

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

      ../../../../_images/image-20220822165919834.png

    • 搜索工程目录下文本

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

      ../../../../_images/image-20220822170326983.png

  13. 复制与粘贴

    常用的命令如下: y 在使用v模式选定了某一块的时候,复制选定块到缓冲区用; yy 复制整行(nyy复制n行,n为数字); y^ 复制当前到行头的内容; y$ 复制当前到行尾的内容; yw 复制一个word (nyw或者ynw,复制n个word,n为数字); yG 复制至档尾(nyG或者ynG,复制到第n行,例如1yG或者y1G,复制到档尾);

    1. 剪切的命令是d 即delete,d与y命令基本类似,所以两个命令用法一样,包括含有数字的用法. d 剪切选定块到缓冲区; dd 剪切整行 d^ 剪切至行首 d$ 剪切至行尾 dw 剪切一个word dG 剪切至档尾

    2. 粘贴的命令式p 即put(放下) p 小写p代表贴至游标后(下),因为游标是在具体字符的位置上,所以实际是在该字符的后面 P 大写P代表贴至游标前(上) 整行的复制粘贴在游标的上(下)一行,非整行的复制则是粘贴在游标的前(后)

    注: 在正则表达式中,^表示匹配字符串的开始位置,$表示匹配字符串的结束位置。 命令前面加数字表示重复的次数,加字母表示使用的缓冲区名称。使用英文句号”.”可以重复上一个命令。 在复制粘贴时,另一组常用的命令是u(撤销操作),U(撤销某一行最近所有修改),Ctrl+R(重做),这些功能主要是vim中的,vi中略有差别