基础命令
<C-a>
代表Ctrl + a
,其他同理A
在光标所在行末尾添加内容a
在光标之后添加内容aw
是指一个文本如一个词^
快速移动到行首$
快速移动到行尾db
删除从光标其实位置到单词开头的内容<C-a>
和<C-x>
分别对数字执行加和减操作,如光标在字符5上面执行10<C-a>
就会把它变成15, 如果5的前方或者当前位置处运行10<C-a>
就会把它变成6在Vim中如果遇到0开头的数字比如007就会被认为是八进制的数字,如果想要修改这个可以在vimrc中添加
set nrformats=
<C-o>
进入插入-普通模式, 可以执行一遍普通模式后进入插入模式zz
重绘屏幕,便且吧当前行显示在窗口正中<Esc>
,<C-[>
切换到普通模式在插入模式下
<C-h>
为删除前一个字符(同退格键)在插入模式下
<C-w>
为删除前一个单词在插入模式下
<C-u>
为删除到行首c
修改d
删除y
复制到寄存器g~
反转大小写gu
反转为小写gU
反转为大写>
增加缩进<
减小缩进=
自动缩进!
使用外部程序过滤{motion}所跨越的行Vim的语法大部分当一个操作符连续调用两次时,它会作用于当前行
dap
删除一个段落daB
删除一个{}块:%s/content/copy/g 替换所有 5
第一章: Vim解决问题的方式
技巧1: 结识 . 命令
x
命令会删除光标下的字符>G
会增加缩进等级
技巧2: 不要自我重复
C
删除从光标所在处往后的行并且进入插入模式 = c$.s
删除光标后面的字符并且进入插入模式 =cl.
S
删除光标所在行并且在删除行进入插入模式.I
跳转到行首然后进行插入.A
跳转到行尾然后进行插入.
技巧3: 以退为进
技巧4: 执行, 重复, 回退
;
重复查找上次f命令所查找的字符.@
用来重复任意的Ex命令.%%%%%%%%%%%%目的 操作 重复 回退 做出一个修改 {edit}
. u 在行内查找下一指定字符 f{char}/t{char}
; , 在行内查找上一指定字符 F{char}/T{char}
; , 在文档中查找下一处匹配项 /pattern<CR>
n N 在文档中查找上一处匹配项 ?pattern<CR>
n N 执行替换 :s/target/replacement
& u 执行一系列修改%%%%%%% qx{change}q
@x u
技巧5: 查找并手动替换
*
查找当前光标下的单词.w
当前光标位置到单词末尾.cw
删除从光标位置到单词结尾的字符并且进入插入模式.
技巧6: 结识 . 范式
第一部分 模式
第二章: 普通模式
技巧7: 停顿时请移开画笔
技巧8: 把撤销单元切成块
技巧9: 构造可重复的修改
b
跳转到单词的开头.db
删除从光标起始位置到单词开头的内容.dw
删除从光标起始位置到单词结尾的内容.aw
文本对象(text object).daw
删除所在光标位置的单词.
技巧10: 用次数做简单的算术运算
<C-a>
对光标所在位置的数字进行加.<C-x>
对光标所在位置的数字进行减.- 注意如果前面是以0开头的, 会被认为成八进制.
技巧11: 能够重复, 就别用次数
技巧12: 双剑合璧, 天下无敌
g
在这里可以当中前缀字符,足以该表其后面的按键行为.g~
反转大小写.gu
转换为小写.gU
转换为大写.y
复制到寄存器.- Vim中一条额外规则, 当一个操作符命令被连续调用两次时, 它可以作用于当前行,
dd
删除当前行,>>
缩进当前行,而gU
是一种特殊情况, 我们既可以用gUgU
,也可gUU
. >
增加缩进.<
减少缩进.=
自动缩进.%%%%%%%%%%%%%!
使用外部程序过滤{motion}所跨越的行.- 自定义操作符.
第三章: 插入模式
技巧13: 在插入模式中即可即时更正错误
以下是在插入模式下, 且不是Vim首创,在bash shell也可以使用它们.
<C-h>
删除前一个字符.<C-w>
删除前一个单词.%%%%%%%%%%%有问题不能复现<C-u>
删除到行首.
技巧14: 返回普通模式
<Esc>
,<C-[>
从插入模式切换回普通模式<C-o>
从插入模式切换到插入普通模式, 是普通模式的一个特例, 它能执行一个普通模式命令, 执行完后就返回到插入模式.
技巧15: 不离开插入模式, 粘贴寄存器中的文本
yt
是复制到专用寄存器中.%%%%%%%%%%%<C-r>0
把复制到的文本粘贴到光标所在位置. 它的一般格式是<C-r>{register}
,其中{register}
是我们想要插入的寄存器的名字.%%%%%%%%
技巧16: 随时随地做运算
- ???????????
技巧17: 用字符编码插入非常用字符
<C-v>{code}
用字符编码插入非常用字符,如<C-v>u00bf
输入¿,u的意思是用十六进制.ga
限速当前光标下的编码,分别以十进制和十六进制的形式限速.
技巧18: 用二合字母插入非常用字符
<C-k>{char1}{char2}
用二合字母插入非常用字符,如<C-k>?I
输入¿,详细用法:h digraphs-default
,查看可以用的二合字母列表:digraphs
或者是:h digraphs-table
.
技巧19: 用替换模式替换已有文本
<Insert>
按键,可以在插入和替换模式下进行切换, 同R
.R
命令进入的是替换模式, 这个模式下某些字符回变得复杂化, 如制表符,它在文件中以单个字符表示, 但是在屏幕中却会占用若干列的宽度, 此宽度由tabstop
设置. 如果把光标移动倒制表符上,然后进入替换模式, 那么我们所输入的下一个字符将会替换制表符, 假设tabstop
设为8(缺省值), 那么该操作就是把8个字符替换成了一个字符. 而Vim还有另一种虚拟替换模式,由gR
触发, 它会把制表符当成一组空格进行处理. 假设把光标移动倒制表符上,然后进入虚拟替换模式, 在输入前7个字符时, 每个字符都会被插入到制表符之前, 最后, 当输入了第8个字符时, 该字符将会替换制表符.
第四章
技巧20: 深入理解可视模式
技巧21: 选择高亮选区
- 激活可视模式
命令 | 用途 |
---|---|
v | 激活面向字符的可视模式 |
V | 激活面向行的可视模式 |
激活面向列块的可视模式 | |
gv | 重选上次的高亮选区 |
- 在可视模式之间进行切换
按键操作 | 用途 |
---|---|
| <C-[> | 回到可视模式 |
v | V | | 切换到普通模式, 分别对应面向字符可视模式, 面向行的可视模式, 面向列块的可视模式 |
v | 切换到面向字符的可视模式 |
V | 切换到面向行的可视模式 |
切换到面向列块的可视模式 | |
o | 重选高亮选区的活动端 |
e
向后到单词的末尾.
技巧22: 重复执行面向行的可视命令
技巧23: 只要可能, 最好用操作符命令
it
是一种文本对象(text object).vit
选择标签内的内容. 如<a href="#">one</a>
,使用vit
就会高亮one.
技巧24: 用面向列块的可视模式编辑表格数据
技巧25: 修改列文本
- 在插入时只影响顶行, 但是按下
Esc
后将会正常插入所选的区域 ????自己的总结
技巧26: 在长短不一的高亮块后添加文本
第五章 命令行模式
技巧27: 结识命令行模式
读写文件
:edit
.创建及销毁新标签页
:tabnew
,:tabclose
.分割窗口
:split
:sp
.1. `<C-w> k|j|h|l` 移动光标到上下左右. 2. `<C-w> K|J|H|L` 移动窗口到上下左右.
操作参数列表
:prev/:next
及缓冲区列表:bprev/:bnext
.更多Ex命令
:h ex-cmd-index
.操作缓冲区文本的Ex命令
命令 用途 :[range]delete [x]
删除指定范围内的行(到寄存器x中) :[range]y[ank] [x]
复制指定范围内的行(到寄存器x中) :[range]put [x]
在指定行后粘贴寄存器x中的内容 :[range]co[py] {address}
把指定范围内的行拷贝到 {address}
所指定的行之下:[range]m[ove] {address}
把指定范围内的行拷贝到 {address}
所指定的行之下:[range]j[oin]
把指定范围的行连接到一起变成一行: :[range]norm[al] {commands}
对指定范围内的每一行执行普通模式命令 {commands}
:[range]s[ubstitute]/{pattern}/{string}/[flags]
对指定范围内出现 {pattern}
的地方替换成{string}
:[range]g[lobal]/{pattern}/[cmd]
对指定范围内匹配{pattern}的所有行,在其上执行Ex命令 {cmd}
#### 技巧28: