目录
相关链接:
- 简明vim 练级攻略
- 给程序员的vim速查卡
- Taglist 插件 https://www.vim.org/scripts/script.php?script_id=273
- Taglist如何使用 https://www.cnblogs.com/diegodu/p/7088596.html
- cscope插件 https://blog.csdn.net/magiclyj/article/details/79660259
- 多窗口管理 https://www.cnblogs.com/shanql/articles/6048412.html
一、.vimrc配置
" taglist
let Tlist_Show_One_File=1 "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow=1 "如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Ctags_Cmd="/usr/bin/ctags" "将taglist与ctags关联
let Tlist_WinWidth=40
二、简单操作
命令模式
文档操作类
i 进入编辑模式 Esc 进入命令模式
j k h l 下上左右
a 从下一个位置进入编辑模式
I (shift + i) 定位到行首并进入编辑模式
A 定位到行尾并进入编辑模式
o 在当前行后插入新行并在新行出进入编辑模式 == 光标移至行尾,回车+ i
O 在当前行插入新行并在新行出进入编辑模式 == 光标移至行首,i,回车,上移
u 撤销上一步操作
ctrl + r 反撤销(也就是将u操作恢复回去)
x 删除当前光标的字符
dd 删除当前行(将当前行移入剪贴板) --> dd + 移动光标 + p 剪贴当前行到新位置
yy 复制当前行
需要加上冒号的,先输入冒号 ( : ), 然后以回车结尾
w 保存文件
q 退出
q! 退出不保存
x 保存并退出
wq 保存并退出
help + 命令 查询对应命令的帮助文档
多窗口
命令模式
Ctrl + z 将当前窗口切到后台
Ctrl + p 和 Ctrl + o 打开多个文件后,使用这两个命令来切换下一个或上一个文件
fg 恢复切到后台的程序,与Ctrl + z 组合使用方便调试
先输入冒号( : ) , 以回车结尾
new, vnew + 文件名 纵向/横向打开新文件
e + 文件名 打开新文件
bd 将当前文件从文件条中移除(不关闭vim)
bd + 文件名 将对应文件从文件条中移除(不关闭vim)
bn 和 bp 打开多个文件后,使用这两个命令来切换下一个或上一个文件
三、中阶操作
命令模式
移动光标
0 数字0,移动光标到行首
^ 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
$ 到本行行尾
g_ 到本行最后一个不是blank字符的位置
文本复制
光标移至33行 + 13 + y + 回车 复制33,45行内容
光标移至33行 + y + 45 + G 复制33,45行内容
V(或v) 选择33行至45行 + y 复制33,45行内容
p 从下一行开始粘贴复制的内容
" [1-9]+- n y 将n行复制进入第1-9 + 或 - 剪贴板
" [1-9]+- p 将第1-9 + 或 - 剪贴板内容粘贴出来
删除操作
cw 替换从光标所在位置后到一个单词结尾的字符
dw 删除从光标所在位置后到一个单词结尾的字符
文本搜索
/pattern 搜索 pattern 的字符串,按n表示查找下一个,按N表示查找上一个,按回车表示结束搜索
:noh 用于搜索完后取消高亮
另存为
:saveas <path/to/file> 另存为<path/to/file>(路径加文件名)
四、高阶操作
命令重复
. 重复上一次命令
N <command> 重复命令N次
光标移动
NG 将光标定位到第N行
gg 将光标移到第一行
G 将光标移到最后一行
代码自动对齐
M=N 从M行到N行自动对齐,省略M表示从光标处开始
gg=G 从第一行到最后一行自动对齐
单词移动
w 到下一个单词的开头。(单词由字母,数字,下划线组成)
e 到下一个单词的结尾。
W 到下一个单词的开头,该单词包括一些特殊字符。
E 到下一个单词的结尾,该单词包括一些特殊字符。
% 将光标移至括号上,按% 实现匹配括号移动
* 和 # 匹配当前光标所在单词,移动光标到下一个(或上一个)匹配单词。
批量替换
:N,Ms/pattern/pattern2/g 将N至M行的字符串pattern都替换成 字符串 pattern2
:%s/pattern/pattern2/g 将所有行的字符串pattern都替换成 字符串 pattern2
:%s/.$//g 全文尾部删除1个字符,可以使用上面那个带行号的,进行特定删除
:%s/^.//g 全文首部删除1个字符
:%s/\s\+$//g 删除行尾多余的空格和tab符号, 其中\s\+不能写成\s+
可以将下面代码加入.vimrc中,自动执行
autocmd BufWritePre *.c :%s/\s\+$//e
\s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 |
\t | 匹配一个制表符。等价于 \x09 和 \cI。 |
\r | 匹配一个回车符。等价于 \x0d 和 \cM。 |
\n | 匹配一个换行符。等价于 \x0a 和 \cJ。 |
自动提示(自动补齐功能)
Ctrl + n
Ctrl + p
可视化选择
v 光标处开始行选
<C-v> 方块状选取
V 行选
批量注释
<C-v> + j(或k) + I(大写i) + // + Esc