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$: 把当前行复制到文本结尾- ``