git clone https://github.com/hstk30/vimrcI.git .vim/vimrcI
ln -s ~/.vim/vimrcI/vimrc ~/.vimrc
ln -s ~/.vim/vimrcI/ideavimrc ~/.ideavimrc
在VIM 中安装插件
:PlugInstall
除了YouCompleteMe 应该都很快下好了, 否则你应该检查一下你的网络😕
有时候只是临时需要登录某些服务器查看数据,不需要插件功能
git clone https://github.com/hstk30/vimrcI.git .vim/vimrcI
ln -s ~/.vim/vimrcI/no_plugin_vimrc ~/.vimrc
- Universal Ctags, global,插件vim-gutentags 需要
YouCompleteMe
的各种依赖YouCompleteMe
" PracticalVim Tip 49
let mapleader=","
noremap \ ,
- 右-左-左 ,或者 右-左-右 ,因为
<leader>
设置的,
, 因此插件的快捷键尽量调整为左手按键的缩写。 - 尽量少的覆盖原有键位,暂时覆盖了
,
,C-a
,C-e
- 没有用
M-x
D-x
A-x
TAB
Fn
等键位组合,因为Mac + iTerm2
上有各种历史问题
N
: Normal modeV
: Visual modeI
: Insert modeC
: Command mode
+
表示支持多个 模式
按键 | 模式 | 说明 |
---|---|---|
C-k |
N |
跳转到上面窗口 |
C-j |
N |
跳转到下面窗口 |
C-h |
N |
跳转到左边窗口 |
C-l |
N |
跳转到右边窗口 |
按键 | 模式 | 说明 |
---|---|---|
[ot |
N |
打开一个 tab |
]ot |
N |
关闭当前 tab |
C-\ |
N+I |
最近 tab 之间来回切换 |
<leader>to |
N |
只保留当前 tab,关闭其他 tab |
<leader>1 |
N |
切换到 1 号 tab |
<leader>2 |
N |
切换到 2 号 tab |
... | N |
切换到 x 号 tab |
<leader>0 |
N |
切换到 10 号 tab |
<leader>ew |
N |
在当前 buffer 打开文件,扩展了当前文件路径 |
<leader>es |
N |
以 split 打开文件,扩展了当前文件路径 |
<leader>ev |
N |
以 vsplit 打开文件,扩展了当前文件路径 |
<leader>et |
N |
在新 tab 打开文件,扩展了当前文件路径 |
按键 | 模式 | 说明 |
---|---|---|
dk |
N+V |
当前行和上一行交换 |
dj |
N+V |
当前行和下一行交换 |
记为先删除(d
)然后移动到上/下(k/j
)
按键 | 模式 | 说明 |
---|---|---|
C-a |
I+C |
光标到行头 Home |
C-e |
I+C |
光标到行尾 End |
C-k |
C |
删除整行 |
C-p |
C |
上一条历史命令 Up |
C-n |
C |
下一条历史命令 Down |
按键 | 模式 | 说明 |
---|---|---|
<leader>y |
N |
复制到系统剪切板 |
<leader>Y |
N |
复制到系统剪切板 |
<leader>p |
N |
从系统剪切板粘贴 |
<leader>P |
N |
从系统剪切板粘贴 |
按键 | 模式 | 说明 |
---|---|---|
<leader>tt |
N |
在 bottom 开启终端 |
<Esc> |
终端 | 进入 Terminal-Normal 模式,i/a 返回终端模式 |
ack.vim : vimgrep 替代
<leader>ss
N
-:Search xxx
当前项目下递归查找xxx
,默认为 last pattern<leader>sv
V
- 当前项目下递归查找选中的内容<leader>*
N
- 当前项目下递归查找当前光标下的单词
QFGrep : 过滤 Quickfix 列表
<leader>g
N
- 在Quickfix/location-list buffer中进一步过滤<leader>v
N
- grep -v,先ACK,然后过滤一些 test 目录<leader>r
N
- 恢复Quickfix/location-list
LeaderF : 文件模糊查找
<leader>ff
N
- 当前项目下按文件名模糊查找<leader>fb
N
- 查找 buffer<leader>fm
N
- 在最近打开过的文件里模糊查找<leader>ft
N
- 按 tag 查找<leader>fl
N
- 按行查找
ale : 语法动态检查
[e
N
- 当前 buffer 的上一个语法错误 error warning]e
N
- 当前 buffer 的下一个语法错误 error warning[E
N
- 当前 buffer 的第一个语法错误 error warning]E
N
- 当前 buffer 的最后一个语法错误 error warning<leader>dl
N
- 小窗口显示具体错误信息
vim-fugitive : git 相关
<leader>gb
N
- git blame<leader>gf
N
- git diff
vim-gitgutter : git diff 可视化
<leader>df
N
- 开启/关闭git diff
可视化[h
N
- 当前 buffer 的上一个git diff
改动]h
N
- 当前 buffer 的下一个git diff
改动<leader>cp
N
- 小窗口显示改动前后的差异<leader>cs
N+V
- 暂存当前差异<leader>cu
N
- 撤销当前差异
nerdtree : 文件树
<leader>nn
N
- 开启/关闭文件树<leader>nf
N
- 显示当前 buffer 在文件树中的位置
YouCompleteMe : 代码补全
<leader>k
N
- 开启/关闭hover提醒,默认关闭<leader>gk
N
- 查看文档说明
不同语言不一样,有点不灵,一些大项目需要 YCM-Generator 帮忙。
vim-gutentags 和 gutentags_plus
<leader>gs
N
- Find this symbol<leader>gg
N
- Find this definition<leader>gd
N
- Find functions called by this function<leader>gc
N
- Find functions calling this function
golden-ratio : 多窗口自动调整尺寸
<leader>wr
N
- 多窗口时,调整窗口布局
vim-indent-guides : 可视化代码缩进
<leader>ti
N
- 开启/关闭缩进可视化
argtextobj.vim : 引入参数对象
aa
N
- 参数对象ia
N
- inner 参数对象
vim-surround : Delete/change/add parentheses/quotes/XML-tags/much more with ease
cs{src_pair}{des_pair}
N
-cs"'
cs(]
... change surround pairssrc_pair
todes_pair
ys{text-object}{des_pair}
N
-ysiw'
ysiw]
... surroundtext-object
bydes_pair
ds{des_pair}
N
-ds)
ds"
... delete surround pairsdes_pair
S
V
- surround Visual 选择的范围
vim-commentary : 代码注释
gcc
N
- 注释/取消注释gc
V
- 注释/取消注释 Visual 选择区域
vim-unimpaired 的继承和扩展
按键 | 模式 | 说明 |
---|---|---|
[oh |
N |
高亮搜索开启 |
]oh |
N |
高亮搜索关闭 |
[os |
N |
拼写纠错开启 |
]os |
N |
拼写纠错关闭 |
[op |
N |
粘贴模式开启 |
]op |
N |
粘贴模式关闭 |
*
V
- 对选中文本进行向下查找#
V
- 对选中文本进行向上查找<leader>cn
N
- 统计 last pattern 匹配的数量<leader>sy
N
- 分步替换,先 search 被替换的文本,再 yank 要替换的文本,再执行这个命令进行替换