【工具调教】Vim使用速查
Vim速查 ¶
插入模式 ¶
| 字母 | 含义 |
|---|---|
a |
在当前字符后插入 |
i |
在当前字符前插入 |
o |
插入新行到后 |
A |
在当前行后插入 |
I |
在当前行前插入 |
O |
插入新行到前 |
ctrl h删除上一个字符ctrl w删除上一个单词ctrl u删除当前一行ctrl [退出编辑模式进入normal模式(代替Esc)gi快速回到最后一次编辑位置- 题外话:linux命令行快捷键:
- ctrl a 移动到当前行开头
- ctrl e 移动到当前行结尾
- ctrl b 向前移一位
- ctrl f 向后移一位
normal模式 ¶
快速移动 ¶
h(左),j(下),k(上),l(右)- 单词之间移动
w/W移动到下一个word/WORD开头,e移动到尾部b/B移动到上一个word/WORD开头- word是以非空白符分割的单词,WORD是以空白符分割的单词
- 行间搜索移动
- 使用
f{char}移动到char字符上,用t移动到char的前一个字符 - 可以用分号
;/逗号,继续搜下一个/上一个 F倒着搜
- 使用
- vim水平移动
0移动到行首第一个字符,^移动到第一个非空白字符$移动到行尾,g_移动到行尾非空白字符
- vim垂直移动
- 使用
()在句子间移动 - 使用
{}在段落间移动
- 使用
- vim页面移动
gg/G移动到文件的开头/结尾,Ctrl o快速返回H/M/L移动到屏幕开头/中间/结尾ctrl u/ctrl f上下翻页,zz将当前行放在屏幕中间
增删改查 ¶
- 快速删除
x快速删除一个字符- 删除2个字符
2x
- 删除2个字符
daw快速删除一个单词,包含周围空格diw快速删除一个单词,不包含周围空格dd删除当前行- 删除2行
2dd
- 删除2行
dt[R]从当前删除到[R]字符前
- 快速修改
r[R]将当前光标字符替换成字符[R]R[S]会将其后的字符挨个替换成字符串[S]c删除并进入插入模式- 同上述的
d:cawciwct[R]
- 同上述的
C删除当前光标后整行并进入插入模式s删除当前光标字符并进入插入模式- 删除
[\d]个字符并…[\d]s
- 删除
S删除整行并进入插入模式
- 查询
//?前向搜索、反向搜索n/N跳转到下一个、上一个匹配*/#当前单词的前向、后向匹配
Visual(可视)模式 ¶
- Normal模式下用
v进入visual选择 - 使用
V选择行 - 使用
ctrl v进行方块选择
选择后可以用d剪贴,或则y复制
命令模式 ¶
substitute替换命令 ¶
- 命令格式
:[range] s[ubstitute]/{pattern}/{string}/[flags][range]表示范围:10,20表示10-20行,%表示全部[pattern]想要替换的字符串[string]替换后文本[flags]替换的标志g全局范围内执行c表示确认,可以确认或者拒绝修改n报告匹配次数 不替换,用来查询匹配次数
命令行执行normal命令 ¶
格式
1 | :normal <command> |
用途:使用V选中多行,然后:normal I"在每行前面添加"
多文件切换 ¶
- 打开多文件
:e {FileName} - Buffer缓冲区切换
:ls列举当前缓冲区:b [num]跳转到第[num]个缓冲区:bpre:bnext:bfirst:blast:b [BufferName]+ Tab补全
- 窗口
- 水平分割窗口:
<Ctrl w> s:sp {FileName}水平分割并打开新窗口 - 垂直分割窗口:
<Ctrl w> v:vs - 切换窗口
<Ctrl w> w循环切换窗口<Ctrl w> h切换到左边窗口<Ctrl w> j切换到下边窗口<Ctrl w> k切换到上边窗口<Ctrl w> l切换到下边窗口
- 移动窗口
<Ctrl w> H将当前窗口移动到左边 ,JKL同理
- 重排窗口
<Ctrl w> =使所有窗口等宽等高<Ctrl w> _最大化活动窗口的高度:[num]<Ctrl w> _将高度设为[num]行<Ctrl w> |最大化活动窗口的宽度
- 水平分割窗口:
- Tab(标签页)操作
tabe[dit] {FileName}在新标签页打开文件<Ctrl w> T将当前窗口移动到新标签页tabc[lose]关闭当前标签页及所有窗口tabo[nly]保留当前标签页,关闭其他所有标签页tabn[ext]{N}{N}gt切换到编号为N的标签页tabn[ext]gt切换到下一个标签页tabp[revious]gT切换到上一个标签页
Vim文本对象 ¶
[number]<command>[text object]:格式[number]表示操作次数<command>命令:d删除,c改变,y复制[text object]表示要操作的文本对象
- 文本对象
iw当前单词aw当前单词与当前单词之后的空格is当前句子,as同ip当前段落i +[ ]i(小括号内内容,不包括小括号a(小括号及小括号内容- 类似还有
[]{}<>""''
Vim复制粘贴 ¶
-
normal模式下复制粘贴
-
y(yank)复制 -
d剪贴 -
p(put)粘贴 -
用
v(visual)选中要复制的地方,再用d y p -
配合文本对象
-
-
insert模式下复制粘贴
-
粘贴代码格式混乱解决办法
- 当设置了
autoindent(自动缩进)后,粘贴代码缩进可能会错乱 - 解决办法:
- 粘贴前使用命令:
:set paste - 粘贴后撤销上一条命令:
:set nopaste
- 粘贴前使用命令:
- 当设置了
-
寄存器
-
Vim操作的是vim寄存器,而不是系统剪贴板
-
指定寄存器
-
使用
"{register}作为前缀 执行 复制剪贴粘贴 命令时,可以指定寄存器 -
不指定默认使用无名寄存器 无名寄存器指定为
""两个双引号 -
示例
1
2
3"add # 剪贴该行至a寄存器
"byy # 复制该行至b寄存器
"ap # 粘贴a寄存器内容 -
常见寄存器
寄存器符号 含义 a-z有名寄存器 "0复制专用寄存器 "+复制到系统剪贴板 %当前文件名 ".上次插入文本 -
将系统剪贴板与无名寄存器关联
1
set clipboard=unnamed
-
-
Vim宏 ¶
宏的使用分为 录制 和 回放
- 录制:
- 使用
q{reg}来录制,同时使用q来结束录制 - 使用
q{register}选择要保存的寄存器,把录制的命令保存到其中
- 使用
- 回放
- 使用
@{rigister}回放寄存器中保存的一系列命令
- 使用
Vim补全 ¶
| 命令 | 补全类型 |
|---|---|
Ctrl n |
普通关键字补全(向下) |
Ctrl p |
普通关键字补全(向上) |
Ctrl x Ctrl f |
文件名补全 |
Ctrl x Ctrl n |
当前缓冲区关键字 |
Ctrl x Ctrl i |
包含文件关键字 |
Ctrl x Ctrl ] |
标签文件关键字 |
Ctrl x Ctrl k |
字典查找 |
Ctrl x Ctrl l |
整行补全 |
Ctrl x Ctrl o |
全能(Omni)补全(可能需要安装插件) |
Vim配置 ¶
vim配置 ¶
1 | " 主题 |
Vim映射 ¶
1 | " 主题 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Forgo7ten'blog!
评论




