vim推荐配置:
cpp
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 新按键 老按键