演奏
当你看到诸如<C-p> 这样的键时,它的意思不是先按 <, 然后按
C,再按-等等
<C-p> 标记等同于 Ctrl - p,意为 同时按 <Ctrl> 及 p
我们可以使用这个作为自定义
占位符
很多Vim命令需要以一定的次序按两个或多个按键。有些命令后面必须
跟某种特定类型的按键,而其他命令后则可以跟键盘上的任意键。我们
使用花括号表示一条命令后可以跟有效按键的集合。
f{char} 按 f, 后面跟任意字符
{a-z} 按
, 后面跟任意小写字母
m{a-zA-Z} 按 m, 后面跟任意小写或大写字母
d{motion} 按 d, 后面跟任意动作命令
<C-r>{register} 同时按<Ctrl> 和 r,后面跟一个寄存器地址
显示特殊按键
<Esc> 按退出键
<CR> 按回车键,也协作<Enter>
<Ctrl> 按控制键
<Tab> 按制表键
<Shift> 按切换键
<S-Tab> 同时按<Shift> 和 <Tab>
<Up> 按上光标键
<Down> 按下光标间
在可视模式下选择文本
可视模式允许我们在缓冲区内选择文本,然后在其上操作。?????
刚开始光标在 h 字母上,我们用 it 文本对象选中<a> 标签内的文本。
<a href="http://www.baidu.com">Practical Vim</a>
使用Vim 的出厂配置
$ vim -u NONE -N
-u NONE 标志让Vim 在启动时不加载你的
vimrc,这样,你的定制项就不会生效,插件也会被禁用。当不用vimrc
文件的方式启动时,Vim会切换到vi兼容模式,这将导致很多有用的功能
被禁用,而-N 标志则使能 nocompatible
选项,防止进入vi 兼容模式。
删除整个单词
aw 是文本对象(text object), 而不是动作命令。
daw 可以理解为 "delete a world" 这样比较容易记忆。
用次数做简单的运算
<C-a> 和 <C-x> 命令分别对数字执行加和减操作。
在Mac 上 <C-a> 表示 control 和 a 标签
如果我们把 光标移到字符5 上,执行10<C-a> 就会把它变成15
如果你经常使用八进制,Vim
的缺省行为或许会适合你。但是如果不是这样,那么你可能想把下面这行加入你的vimrc
里
set nrformats=
这会让Vim 把 所有数字都当成十进制,不管他们是不是以0 开头。
操作符 + 动作命令 = 操作
d{motion} 命令可以对一个字符 dl
一个完整单词 daw
或者一整个段落 dap
c{motion},y{motion} 以及其他一些命令也类似,它们被统称为操作符(operator)
g~ 反转大小写
gu 转换为小写
gU 转换为大写
g 当做一个前缀符号,用以改变其后面的按键行为。
gUaw 把当前单词转换成大写形式
gUap 把整段文字转换为大写
在插入模式中可及时更正错误
在插入模式下,退格键的作用如你所愿,它删除光标前的字符。另外我们还可以用下面这些组合键
按键操作 | 用途 |
---|---|
<C-h> | 删除前一个字符(同退格键) |
<C-w> | 删除前一个单词 |
<C-u> | 删至行首 |
这些命令不是插入模式所独有的,甚至也不是Vim
所独有的,在Vim的命令行模式中,以及在bash shell
中,也可以使用它们
随时随地做运算
6 chairs, each costing $35, totals $
按键操作 | 缓冲区内容 |
---|---|
A | 6 chairs, each costing $35, total $ |
<C-r>=6*35<CR> | 6 chairs, each costing $35, totals $210 |
表达式寄存器远不止做简单算术运算。还有更高级的应用
输入一下内容
control - r = 6 * 35 enter
替换模式
R
命令可以由普通模式进入替换模式
进入可视模式
如果你想把 单词 “March” 修改为 “April”
这一次,假设我们不是在网页上的文本框里,而是回到了舒适的vim中。
我们先把光标移到单词“March”的某个位置,然后执行 viw 来高亮
选择这个词。我们现在不能直接输入单词 “April”,因为这会触发
A 命令并把 “pril” 添加到行尾。我们要换种做法,先用c 命令
修改所选内容,把这个单词删掉并进入插入模式,然后就可以输入
完整的“April” 了。
使用 c
命令,就是可以把整个单词删掉,并进入插入模式
激活可视模式
命令 | 用途 |
---|---|
v | 激活面向字符的可视模式 |
V | 激活面向行的可视模式 |
<C-v> | 激活面向列快的可视模式 |
gv | 重选上次的高亮选取 |
gv 命令是个有用的快捷键,它用来重选上一次由可视模式所选择的文本范围。
不管上个选区是面向字符的、面向列的。
在可视模式切换
按键操作 | 用途 |
---|---|
<Esc> / <C-[> | 回到普通模式 |
o | 切换高亮选区的活动端 |
高亮选区的范围由其两个端点界定。其中一端固定,而另一端可以随光标自由移动。
我们可以用 o
键来切换其活动的端点。在定义选区时,如果定义到一半时,
才发现选区开始的位置不对,此时用这个键就会很方便,我们用不着退出可视模式
再从头开始,只需按一下o,然后重新调整选区的边界即可。
vit
<a href="#">one<a>
我们可以用vit 来选择标签里的内容,vit
可被解读为高亮选中标签内部的内容(visually select inside the tag)
而it 命令是一种被称为文本对象(text object)的特殊动作命令。
vitU 及 gUit 有很大的不同
这4次按键可以被当做两个独立的命令,vit 用来选中选区,而U用来对选区进行转换。
与之相反的是,gUit 命令可以被当成一个单独的命令,它由一个操作符(gU)和一个动作命令(it) 组成
面向列块的可视模式编辑表格数据
在列间增加分隔竖线
第一种:
<C-v>3j -> x... -> gv -> r|
gv 表示重选上次的 高两区
r| 表示将
第二种:
yyp -> Vr-
Vr- 表示将选中的行,全部替换成-