vim推荐配置:
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
0. 规定
Ctrl-λ 等价于 <C-λ>
:
command
等价于
:command <回车>
n 等价于 数字
blank字符 等价于 空格,tab,换行,回车等
1. 命令模式 -> NORMAL
<operation> 其他 <motion>
1.0 复制
- yy 等价于 shift + y → 复制当前行
- nyy → 从本行向下,复制n行
- yw → 从光标开始复制到这个单词尾
- nyw → 从光标开始复制到n个单词尾
1.1 删除字符
x
→ 删除光标所在的一个字符 s → 删除光标所在的一个字符 并 进入插入模式- X → 删除光标前一个字符
n
x
→ 删除光标所在的n字符- nX → 删除光标前n一个字符
dt字符
→ 删除所有的内容,直到遇到字符- 比如dt"表示从当前光标开始 一直删除 直到''
1.2 查找
-
f + 字符 → 查找字符
-
df + 字符 → 从这个光标开始 一直 删除到字符结束
-
cf + 字符 → 从这个光标开始 一直 删除到字符结束 并进入插入模式
1.3 命令 → 插入模式
- i → 光标不动 并 进入插入模式
a
→ 光标向后 并 进入插入模式o
→ 向下新增一行 并 进入插入模式O
→ 向上新增一行 并 进入插入模式cw
→ 从光标位置 删除 连续字符 并 进入 插入模式(可以有多种组合)- cnw → 从光标位置 删除 连续n字符 并 进入 插入模式(可以有多种组合)
- shfit + i → 光标移动到行首 并 进入插入模式
- shift + a → 光标移动到行尾 并 进入插入模式
1.4 简单的光标移动
0
→ 数字零,到行头- <C-4>→ 到本行行尾
- <C-6>→ 到本行第一个不是blank字符的位置
g_
→ 到本行最后一个不是blank字符的位置
1.5 对文件操作
:e <path/to/file>
→ 打开文件:w
→ 保存文件:q!
→ 退出文件 且 不保存:x
,ZZ
或:wq
→ 保存并退出 (:x
表示仅在需要时保存,ZZ不需要输入冒号并回车):saveas <path/to/file>
→ 另存为<path/to/file>,还会打开这个文件
:bn
和:bp
→ 切换文件,下一个文件,上一个文件 (n表示next,p表示prev)- :n 文件名→ 切换到这个文件
1.6 重复命令
.
→ (小数点) 可以重复上一次的命令- N<command> → 重复某个命令N次
1.7 高效的光标移动
1.7. 1 按行移动
gg
→ 到第一行- G → 到最后一行
- 数字+
G
→ 到第 几行,或者: 数字→到第几行 - n + enter→ 向下跳几行
1.7.2 按单词移动
以默认方式(字母,数字和下划线) 为分割符
w
→ 移动到下一个单词的开头。b 则表示 上一个单词的开头e
→ 移动到本单词 或 下一个单词的结尾。
以blank字符为分隔符
- shift + w → 到下一个单词的开头,shift + b 则表示 上一个单词的开头
- shift + e → 移动到本单词 或 下一个单词的结尾。
1.7.3 (最强)在同一行的光标移动
从左向右 (正方向)
- f+字符→光标移动到这个字符处
- t+字符→光标移动到这个字符的前一个位置
从右向左 (反方向)
- shift + f+字符→光标移动到这个字符处
- shift + t+字符→光标移动到这个字符的后一个位置
注: 数字 + f + 字符→移动到当前的第几个字符上
注:
1.8 字符大小写转换
-
~ → 完成光标所在位置字符的大小写切换
-
n~ → 完成光标所在位置开始往后的n个字符的大小写切换
1.9 最强的光标移动
%
: 匹配括号移动,包括(
,{
,[
.(需要把光标先移到括号上)*
和#
: 匹配光标当前所在的单词,移动光标到下一个(或上一个)
匹配单词(*是下一个,#是上一个)
1.10 翻页
-
<C-b>
→ 上翻一页 -
<C-f>
→ 下翻一页 <C-u>
→ 上翻半页<C-d>
→ 下翻半页
1.11 替换字符
- r → 替换光标所在位置的字符
- R → 替换光标所到位置的字符,直到按下「Esc」键为止
1.12 (重要)区域选择
<action>a<object>
或<action>i<object>
-
action可以是任何的命令,如
d
(删除),y
(拷贝),v
(可以视模式选择)。 - object 可能是:
w
一个单词,W
一个以空格为分隔的单词,s
一个句字,p
一个段落。也可以是一个特别的字符:"、
'、
)、
}、
]。
<action>a<object>(包括object),
<action>i<object>(不包括object),
1.13 (重要)块操作: <C-v>
1.13.1 快速注释
- 按下 ctrl+v 进入可视化模式;
- 上下键(只是上下键)移动光标,选中多行的开头;
- 按下大写的I,此时进入insert插入模式;
- 输入要插入的注释符,如:#、//;
- 按下ESC,就会看到多行代码被注释。
1.14 (重要)自动提示
<C-n>
和<C-p>
-
<C-n> 表示自动补齐的下一个
<C-p> 表示自动补齐的上一个
1.15 宏录制: qa
操作序列 q
, @a
, @@
qa
把你的操作记录在寄存器a。
- q : 停止录制
- 于是
@a
会replay被录制的宏。 @@
是一个快捷键用来replay最新录制的宏
1.15.1实际操作->快速编号
注 : Y 等价于 yy
qaYp<C-a>q
→qa
开始录制Yp
复制当前行,并粘贴<C-a>
增加1q
停止录制
先预执行一次: @a
→ 在1下面写下 2重复执行多次 @@
→ 在2 正面写下3- 现在做
5@@
会创建新的5行,并把数据增加到 8
2. 可视化模式
v
→进入单个选择
V
→进入行选择
<C-v>
→进入块选择
2.1 实际操作 -> 在所有行尾加;
<C-v>
- 选中相关的行 (可使用
j
或<C-d>
或是/pattern
或是%
等……) - $ 到行最后
A+字符
,按ESC。
2.2 其他操作
J
→ 把所有的行连接起来(变成一行)<
或>
→ 左右缩进=
→ 自动给缩进(非常好用)
3. 底行模式->COMMAND
- : vs+文件名:分屏操作
-
:wq
→ 存盘 + 退出 (:w
存盘,:q
退出) :help <command>
→ 显示相关命令的帮助。你也可以就输入:help
而不跟命令
(退出帮助需要输入:q)- :!cmd:不退出vim执行对应的命令(执行命令行,编译,运行,查看man等等)
/pattern
→ 搜索pattern
的字符串(如果搜索出多个匹配,可按n键到下一个)
4. 分屏操作
4.1 分屏启动Vim
- vim -On file1 file2 ... 使用大写的O参数来垂直分屏。
- vim -on file1 file2 ...使用小写的o参数来水平分屏。
4.2 创建水平 && 垂直分屏
:split
→ 创建水平分屏 等价于<C-w> +
s:vsplit
→ 创建垂直分屏 等价于<C-w> + v
- :sp filename 上下分割,并打开一个新的文件。
- :vsp filename 左右分割,并打开一个新的文件。
4.3 关闭分屏
<C-w>
c 关闭当前窗口。<C-w>
q 关闭当前窗口,如果只剩最后一个了,则退出Vim。
4.3 在分屏中移动光标
-
<C-w> + dir
: dir就是方向,可以是hjkl
或是 ←↓↑→ 中的一个,其用来切换分屏。 -
<C-w>+ w
:
4.4 更改分屏的屏幕尺寸
<C-w>
+ = : 让所有的屏都有一样的高度。<C-w>
+ : 增加高度<C-w>
- : 减少高度- <C-w> + _ : 最大化尺寸
5. vim改键位的操作
- vim的配置文件都在vimrc里面
- nnoremap 新按键 老按键