An automatic configuration program for vim

    • 安装
      • Mac OS X
        • 安装[HomeBrew][3]
        • 安装vimplus
        • 设置Nerd Font
        • 更新vimplus
      • Linux 64-bit
        • 支持以下发行版
        • 安装vimplus
        • 设置Nerd Font
        • 多用户支持
        • 更新vimplus
      • Android 64-bit([Termux][87])
        • 安装vimplus
        • 更新vimplus
      • Docker
    • 自定义
    • 快捷键集合
      • 插件相关
      • 插入模式
      • 缓存操作
      • 窗口操作
      • 光标移动
      • 文本编辑
      • 文件操作
      • 使用外部程序
      • 宏录制
      • 实用命令
      • 帮助
    • 其他
    • FAQ

===============================================

![main][2]

安装

Mac OS X

安装[HomeBrew][3]

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent/Homebrew/install/master/install)"

安装vimplus

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

设置Nerd Font

为防止vimplus显示乱码,需设置mac终端字体为Droid Sans Mono Nerd Font

更新vimplus

紧跟vimplus的步伐,尝鲜新特性

./update.sh

Linux 64-bit

支持以下发行版

安装vimplus

git clone https://github/chxuan/vimplus.git ~/.vimplus
cd ~/.vimplus
./install.sh //不加sudo

设置Nerd Font

为防止vimplus显示乱码,需设置linux终端字体为Droid Sans Mono Nerd Font

多用户支持

将vimplus在某个用户下安装好后,若需要在其他用户也能够使用vimplus,则执行

sudo ./install_to_user.sh username1 username2 //替换为真实用户名

更新vimplus

紧跟vimplus的步伐,尝鲜新特性

./update.sh

Android 64-bit([Termux][87])

安装vimplus

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

更新vimplus

紧跟vimplus的步伐,尝鲜新特性

./update.sh

Docker

[ubuntu-vimplus][79]是vimplus基于ubuntu18.04的docker镜像,无需安装vimplus,即可快速体验vimplus带来的快乐

docker run -it chxuan/ubuntu-vimplus

自定义

  • [~/.vimrc][82]为vimplus的默认配置,一般不做修改
  • [~/.vimrc.custom.plugins][83]为用户自定义插件列表,用户增加、卸载插件请修改该文件
  • [/.vimrc.custom.config][84]为用户自定义配置文件,一般性配置请放入该文件,可覆盖[/.vimrc][82]里的配置

快捷键集合

插件相关

快捷键说明
,Leader Key
<leader>n打开/关闭代码资源管理器
<leader>t打开/关闭函数列表
<leader>a.h .cpp 文件切换
<leader>u转到函数声明
<leader>U转到函数实现
<leader>u转到变量声明
<leader>o打开include文件
<leader>y拷贝函数声明
<leader>p生成函数实现
<leader>w单词跳转
<leader>f搜索~目录下的文件
<leader>F搜索当前目录下的文本
<leader>g显示git仓库提交记录
<leader>G显示当前文件提交记录
<leader>gg显示当前文件在某个commit下的完整内容
<leader>ff语法错误自动修复(FixIt)
<c-p>切换到上一个buffer
<c-n>切换到下一个buffer
<leader>d删除当前buffer
<leader>D删除当前buffer外的所有buffer
vim运行vim编辑器时,默认启动开始页面
<F5>显示语法错误提示窗口
<F9>显示上一主题
<F10>显示下一主题
<leader>l按竖线对齐
<leader>=按等号对齐
Ya复制行文本到字母a
Da剪切行文本到字母a
Ca改写行文本到字母a
rr替换文本
<leader>r全局替换,目前只支持单个文件
rev翻转当前光标下的单词或使用V模式选择的文本
gcc注释代码
gcap注释段落
vif选中函数内容
dif删除函数内容
cif改写函数内容
vaf选中函数内容(包括函数名 花括号)
daf删除函数内容(包括函数名 花括号)
caf改写函数内容(包括函数名 花括号)
fa查找字母a,然后再按f键查找下一个
<leader>e快速编辑~/.vimrc文件
<leader>s重新加载~/.vimrc文件
<leader>vp快速编辑~/.vimrc.custom.plugins文件
<leader>vc快速编辑~/.vimrc.custom.config文件
<leader>h打开vimplus帮助文档
<leader>H打开当前光标所在单词的vim帮助文档
<leader><leader>t生成try-catch代码块
<leader><leader>y复制当前选中到系统剪切板
<leader><leader>i安装插件
<leader><leader>u更新插件
<leader><leader>c删除插件

插入模式

快捷键说明
i在光标处进入插入模式
I在行首进入插入模式
a在光标后进入插入模式
A在行尾进入插入模式
o在下一行插入新行并进入插入模式
O在上一行插入新行并进入插入模式
gi进入到上一次插入模式的位置
<esc>退出插入模式

缓存操作

快捷键说明
:e <filename>新建buffer打开文件
:bp切换到上一个buffer
:bn切换到下一个buffer
:bd删除当前buffer

窗口操作

快捷键说明
:sp <filename>横向切分窗口并打开文件
:vsp <filename>竖向切分窗口并打开文件
<c-w>h跳到左边的窗口
<c-w>j跳到下边的窗口
<c-w>k跳到上边的窗口
<c-w>l跳到右边的窗口
<c-w>c关闭当前窗口
<c-w>o关闭其他窗口
:only关闭其他窗口

光标移动

快捷键说明
h上下左右移动
j上下左右移动
k上下左右移动
l上下左右移动
0光标移动到行首
^跳到从行首开始第一个非空白字符
$光标移动到行尾
<c-o>跳到上一个位置
<c-i>跳到下一个位置
<c-b>上一页
<c-f>下一页
<c-u>上移半屏
<c-d>下移半屏
H调到屏幕顶上
M调到屏幕中间
L调到屏幕下方
:n跳到第n行
w跳到下一个单词开头(标点或空格分隔的单词)
W跳到下一个单词开头(空格分隔的单词)
e跳到下一个单词尾部(标点或空格分隔的单词)
E跳到下一个单词尾部(空格分隔的单词)
b上一个单词头(标点或空格分隔的单词)
B上一个单词头(空格分隔的单词)
ge上一个单词尾
%在配对符间移动, 可用于()、{}、[]
gg到文件首
G到文件尾
fx跳转到下一个为x的字符
Fx跳转到上一个为x的字符
tx跳转到下一个为x的字符前
Tx跳转到上一个为x的字符前
;跳到下一个搜索的结果
[[跳转到函数开头
]]跳转到函数结尾

文本编辑

快捷键说明
r替换当前字符
R进入替换模式,直至 ESC 离开
s替换字符(删除光标处字符,并进入插入模式,前可接数量)
S替换行(删除当前行,并进入插入模式,前可接数量)
cc改写当前行(删除当前行并进入插入模式),同 S
cw改写光标开始处的当前单词
ciw改写光标所处的单词
caw改写光标所处的单词,并且包括前后空格(如果有的话)
ct,改写到逗号
c0改写到行首
c^改写到行首(第一个非零字符)
c$改写到行末
C改写到行末(同 c$)
ci"改写双引号中的内容
ci'改写单引号中的内容
ci)改写小括号中的内容
ci]改写中括号中内容
ci}改写大括号中内容
cit改写 xml tag 中的内容
cis改写当前句子
ciB改写’{}'中的内容
c2w改写下两个单词
ct(改写到小括号前
x删除当前字符,前面可以接数字,3x代表删除三个字符
X向前删除字符
dd删除当前行
d0删除到行首
d^删除到行首(第一个非零字符)
d$删除到行末
D删除到行末(同 d$)
dw删除当前单词
dt,删除到逗号
diw删除光标所处的单词
daw删除光标所处的单词,并包含前后空格(如果有的话)
di"删除双引号中的内容
di'删除单引号中的内容
di)删除小括号中的内容
di]删除中括号中内容
di}删除大括号中内容
diB删除’{}'中的内容
dit删除 xml tag 中的内容
dis删除当前句子
d2w删除下两个单词
dt(删除到小括号前
dgg删除到文件头部
dG删除到文件尾部
d}删除下一段
d{删除上一段
u撤销
U撤销整行操作
CTRL-R撤销上一次 u 命令
J连接若干行
gJ连接若干行,删除空白字符
.重复上一次操作
~交换大小写
g~iw替换当前单词的大小写
gUiw将单词转成大写
guiw将当前单词转成小写
guu全行转为小写
gUU全行转为大写
gg=G缩进整个文件
=a{缩进光标所在代码块
=i{缩进光标所在代码块,不缩进"{"
<<减少缩进
>>增加缩进
==自动缩进
CTRL-A增加数字
CTRL-X减少数字
p粘贴到光标后
P粘贴到光标前
v开始标记
y复制标记内容
V开始按行标记
CTRL-V开始列标记
y$复制当前位置到本行结束的内容
yy复制当前行
Y复制当前行,同 yy
yt,复制到逗号
yiw复制当前单词
"+y复制当前选中到系统剪切板
3yy复制光标下三行内容
v0选中当前位置到行首
v$选中当前位置到行末
vt,选中到逗号
viw选中当前单词
vi)选中小括号内的东西
vi]选中中括号内的东西
viB选中’{}'中的内容
vis选中句子中的东西
gv重新选择上一次选中的文字
:set paste允许粘贴模式(避免粘贴时自动缩进影响格式)
:set nopaste禁止粘贴模式
"?yy复制当前行到寄存器 ? ,问号代表 0-9 的寄存器名称
"?p将寄存器 ? 的内容粘贴到光标后
"?P将寄存器 ? 的内容粘贴到光标前
:registers显示所有寄存器内容
:[range]y复制范围,比如 :20,30y 是复制20到30行,:10y 是复制第十行
:[range]d删除范围,比如 :20,30d 是删除20到30行,:10d 是删除第十行
ddp交换两行内容:先删除当前行复制到寄存器,并粘贴

文件操作

快捷键说明
:w保存文件
:w <filename>按名称保存文件
ZZ保存文件(如果有改动的话),并关闭窗口
:e <filename>打开文件并编辑
:saveas <filename>另存为文件
:r <filename>读取文件并将内容插入到光标后
:r !dir将dir命令的输出捕获并插入到光标后
:close关闭文件
:q退出
:q!强制退出
:wa保存所有文件
:cd <path>切换Vim当前路径
:new打开一个新的窗口编辑新文件
:enew在当前窗口创建新文件
:vnew在左右切分的新窗口中编辑新文件
:tabnew在新的标签页中编辑新文件

使用外部程序

快捷键说明
!告诉vim正在执行一个过滤操作
!5Gsort<Enter>使用外部sort命令对1-5行文本排序
!!对当前行执行过滤命令
!!date<Enter>用"date"的输出代替当前行

宏录制

快捷键说明
qa开始录制名字为a的宏
q结束录制宏
@a播放名字为a的宏
100@a播放名字为a的宏100次
:normal@a播放名字为a的宏直到自动结束

实用命令

快捷键说明
/pattern从光标处向文件尾搜索 pattern
?pattern从光标处向文件头搜索 pattern
n向同一方向执行上一次搜索
N向相反方向执行上一次搜索
*向前搜索光标下的单词
#向后搜索光标下的单词
:s/p1/p2/g替换当前行的p1为p2
:%s/p1/p2/g替换当前文件中的p1为p2
:%s/<p1>/p2/g替换当前文件中的p1单词为p2
:%s/p1/p2/gc替换当前文件中的p1为p2,并且每处询问你是否替换
:10,20s/p1/p2/g将第10到20行中所有p1替换为p2
:%s/1\\2\/3/123/g将“1\2/3” 替换为 “123”(特殊字符使用反斜杠标注)
:%s/\r//g删除 DOS 换行符 ^M
:g/^\s*$/d删除空行
:g/test/d删除所有包含 test 的行
:v/test/d删除所有不包含 test 的行
:%s/^/test/在行首加入特定字符(也可以用宏录制来添加)
:%s/$/test/在行尾加入特定字符(也可以用宏录制来添加)
:sort排序
:g/^\(.\+\)$\n\1/d去除重复行(先排序)
:%s/^.\{10\}//删除每行前10个字符
:%s/.\{10\}$//删除每行尾10个字符

帮助

快捷键说明
h tutor入门文档
h quickref快速帮助
h index查询Vim所有键盘命令定义
h summary帮助你更好的使用内置帮助系统
h pattern.txt正则表达式帮助
h eval脚本编写帮助
h function-list查看VimScript的函数列表
h windows.txt窗口使用帮助
h tabpage.txt标签页使用帮助
h tips查看Vim内置的常用技巧文档
h quote寄存器
h autocommand-events所有可能事件
h write-plugin编写插件

其他

快捷键说明
vim -u NONE -N开启vim时不加载vimrc文件
vimdiff file1 file2显示文件差异
vim -R filename以只读方式打开(阅读模式)

FAQ

  • vimplus怎么安装新插件?

    编辑[~/.vimrc.custom.plugins][83],添加自定义插件。

  • vimplus怎么添加自定义配置?

    编辑[~/.vimrc.custom.config][84],添加自定义配置。

  • vimplus安装脚本会在自己电脑上安装哪些软件?

    网络良好情况下,vimplus只需30分钟左右即可将vim cpp环境配置好,vimplus真正的做到了一键配置,不让用户操心。vimplus会安装一些必备软件,比如说python、cmake、gcc、fontconfig等,vimplus也考虑到了有些系统的vim不支持python,它会自动去下载vim源码将python支持编译进去,vimplus也会安装nerd-font不让vim显示出现乱码,最最重要的是vimplus实现了ycm自动编译安装,给折腾了几天ycm都没有安装好的用户带来了新的希望,而且vimplus也支持macos和linux众多发行版,让linux发烧友频繁切换发行版而不用操心vim环境配置。最后说了这么多,不如看[vimplus安装脚本][78]来的直接😄。

  • 启动vim报错:RequestsDependencyWarning: Old version of cryptography ([1, 2, 3]) may cause slowdown.

    可以尝试将cryptography删掉,具体见[issues #208][81]。

  • vimplus不支持目前用户正在使用的系统怎么办?

    可以给作者提[Issues][39],或者自己fork vimplus来修改,并提交pr,贡献自己的一份力量。

  • 安装vimplus后Airline等插件有乱码,怎么解决?

    linux和mac系统需设置终端字体为Droid Sans Mono Nerd Font

  • xshell连接远程主机不能使用vim-devicons或乱码。

    windows系统安装[Nerd Font][51]字体后并更改xshell字体即可。

  • ubuntu18.04安装了nerd font但通过终端属性并没有看到该字体。

    可以试试dconf-editor软件来设置,可以参考[这里][76]。

  • 使用第三方库时怎么让ycm补全第三方库API?

    vimplus安装完毕之后,~目录下将会生成两个隐藏文件分别是.vimrc和.ycm_extra_conf.py,其中.vimrc是vim的配置文件,.ycm_extra_conf.py是ycm插件的配置文件,当你需要创建一个project时,需要将.ycm_extra_conf.py拷贝到project的顶层目录,通过修改该配置文件里面的flags变量来添加你的第三方库路径。

  • 使用vi命令报错:E492: Not an editor command:

    vimplus安装完成后,linux下可能会同时存在vi和vim命令,执行vi时,vi加载~/.vimrc文件可能会报错,但不影响使用,如果要消除错误可以设置软链接ln -s /usr/bin/vim /usr/bin/vi

  • 怎么自定义文件头,比如说添加作者、创建时间?

    你可以修改[chxuan/prepare-code][67]插件来达到目的,可以参考[这里][77]。

  • 安装vimplus在“[ 95%] Building CXX object ycm/CMakeFiles/ycm_core.dir/ycm_core.cpp.o”等进度时出现编译报错

    编译ycm需要消耗较大内存,建议内存大于1G,实在不行也可以开启linux swap分区。

  • 以上没有我遇到的问题怎么办?

    您可以通过上网找解决方法,或提[Issues][39],也可以通过加QQ787280310、发邮件方式787280310@qq一起讨论解决方法。

  • vimplus用起来真的太棒了,怎么办?

    那就麻烦您打赏一颗⭐️⭐️吧,给予我继续维护的动力。

更多推荐

最强 vim 插件vimplus