Vim使用技巧
1. Vim解决问题的方式
1. .
命令
- x: 删除光标下的字符
- .: 重复上次修改
- u: 撤销上此次修改
- dd: 删除当前行
>G
: 增加本行至末尾行的行间距
2. 不要自我重复
$
移至行尾- ^: 移至行头
- A: 切换到插入模式并到行尾,等于
a$
3. 以退为进
- f字符: 移至下个匹配的字符,接着按
;
搜索下次出现的字符 - s=cl: 删除当前字符并进入插入模式
4. 执行、重复、回退
目的 | 操作 | 重复 | 回退 |
---|---|---|---|
做出一个修改 | {etid} | . | u |
在行内查找下一指定字符 | f{char}/t{char} | ; | , |
在行内查找上一指定字符 | F{char}/T{char} | ; | , |
在文档中查找下一匹配项 | /pattern |
n | N |
在文档中查找上一匹配项 | ?pattern |
n | N |
执行替换 | :s/target/replacement | & | u |
执行一系列修改 | qx{changes}q | &x | u |
5. 查找并手动替换
*
: 移至要搜索的单词,按*,查找所以一样的单词,若没看到高亮,请:sethls
了解cw
: 删除光标位置到行尾的字符
6. 结识.
范式
- 理想模式: 用一键移动,另一键执行
2. 普通模式
1. 停顿时请移开画笔
程序猿其实很少在敲
代码,大多在思考
2. 把撤销单元切成块
每一个可撤销快
对应一次修改过程,修改完一次代码,切换回普通模式
3. 构造可重复的修改
daw
: delete a word,
4. 用次数做简单的算术运算
yyp
复制当前行<ctrl+a>
执行数字递增<ctrl+x>
执行递减,光标不在数字时,会自动查找并操作下一个数字- 默认0开头数字为八进制,改变此行为的方法
set nrformats=
5. 能够重复,就别用次数
执行->重复->回退
6. 双剑合璧,天下无敌
命令 | 用途 |
---|---|
c | 修改 |
d | 删除 |
y | 复制到寄存器 |
g~ | 反转大小写 |
gu | 转换为小写 |
gU | 转换为大写 |
> | 增加缩进 |
< | 减小缩进 |
= | 自动缩进 |
! | 使用外部程序过滤(motion)所跨越的行 |
3.插入模式
1.在插入模式中可即使更正错误
<C+w>
: 删除前一个单词<C-u>
: 删除至行首
2. 返回普通模式
<C-o>
: 切换到插入-普通模式,执行完一次命令后,自动切换到插入模式- zz: 光标所在行,放到屏幕中央
3. 不离开插入模式,粘贴寄存器中的文本
yt,
: 复制当前字符直到,<C-r>0
: 把寄存器中第0次复制的取出来
4. 随时随地的做运算
<C-R>=6*35<CR>
: 会把结果插入到当前光标所在处
5. 用字符编码插入非常用字符
<C-v>0xx
: 假如a:065 <C-v>u{xxxx}
5. 用二合字母插入非常用字符
查询二合字母表: h digraphs-default/:h digraph-table
6. 用替换模式已有文本
- R: 从普通->替换模式,替换和插入模式,只是一个会替换..一个会插入
gR
: 触发虚拟替换模式,假如制表符tabstop
为8,那么前7个会当字符处理,第插入第8个字符时,该字符会替换制表符r{char},gr{char}
: 支持覆盖一个字符,立马回到普通模式
4.可视模式
- 可视模式分为操作字符文本、行文本或块文本
1. 深入理解可视模式
<C-g>
: 可视模式<->选择模式
2. 选择高亮选区
- v: 激活面向字符的可视模式
- V: 激活面向行的可视模式
: 激活面向列快的可视模式 - gv: 重选上次的高亮选区
- o: 切换高亮选区的活动端
3.重复执行面向行的可视命令
:set shiftwidth=4 softtabstop=4 expandtab
: 设置缩进为4
4. 只要可能,最好用操作符命令,而不是可视命令
vit
: 选中标签内容U
:大写
5. 用面向列块的可视模式编辑表格数据
C-v
: 进入列选择模式yyp
: 复制并粘贴本行
6. 修改列文本
ESC
: 能复制选择列中做的相应改变,
7. 在长短不一的高亮块后添加文本
5. 命令模式
3. 使用:t
和:m
复制和移动行
:6t.
: 把当前行复制到当前行下方:t$
: 把当前行复制到文本结尾- ``