命令行模式是 用来 执行命令的。
命令的作用是:
1. 修改文本啦 (最经常用的)
2. 对文件的操作,打开新的文件,将文件写入磁盘等。
3. 对窗口的管理,打开一个新的窗口等。
4. 查找文本了。 (最强大的命令)
5. 宏
6. 对寄存器的操作了
很多东西都是在 命令模式下面进行的,所以需要花费很多篇幅来讲解了。
-----------------------------------------------------------------------------------------------------------------------------------------------------------
初始时候,先有 ed, ed 为 ex之父,ex为 vi 之父,而 vi 为 vim之父。
vi 首创区分模式编辑的范例。
ed 是面向行的编辑器。
ex 也是面向行的编辑器,这样就是Vim 中为什么会有Ex 命令了。
这些早期 Unix 文本编辑器中流淌的血脉依然流淌在现代的Vim 中。
这一节中,我们将要学习如何使用 命令行模式,带领大家 了解什么是Ex 命令, 如何使用这些Ex 命令。
技巧27 初识 Vim 的命令行模式
------------------------------------------------------------------------------------------------------------------------------------------
命令行模式会提醒我们输入一条:
Ex 命令
或者 一个查找模式
或者 一个表达式
在本节中,我们探讨一些 操作缓冲区中的文本的 EX 命令。
我们可以用Ex 命令来读写文件 (:edit 和 :write)
创建新的标签页: (:tabnew)
以及分割窗口 (:split)
操作参数列表 (:prev :next)
操作缓冲区列表 (:bprev :bnext)
事实上,vim 几乎为了所有的功能都提供了相应的 Ex 命令来执行。
在这些命令中,绝大部分的命令都可以指定操作的范围。
我们将会学习更多的关于 :delete :yank :put 命令的知识。
:substitute 和 :global 命令非常强大,我们要花费一整副篇章来说明它们。
操作缓冲区文本的 Ex 命令:
:[range]delete [x] 删除指定范围内的文本,到寄存器 x 中
:[range]yank [x] 赋值指定范围内的行 到寄存器x中
:[line]put [x] 在指定的行后粘贴寄存器x中的内容
:[range]copy {address} 把指定范围中的行拷贝到 {address}所指定的行之下.
:[range]move {address} 把指定范围中的行移动到 {address}所指定的行之下.
:[range]join 连接指定范围内的行
:[range]normal {commands} 对指定范围内的每一个行 执行普通模式命令 {commands}
:[range]substitute/{pattern}/{string}/[flags] 替换命令,将范围内出现{pattern}的地方替换为{string}
:[range]global/pattern/[cmd] 对指定范围内匹配{pattern}的所有行,在其上执行 Ex 命令{cmd}
Vim 命令行模式上的特殊按键:
------------------------------------------------------------------------------------------------------------------
<C-w> : 删除上一个单词
<C-u>:删除至行首
<C-v>:插入特殊的字符
<C-r>{register} : 把任意寄存器的内容插入到命令行中。
<left> 和 <right> 光标进行移动。
Ex 命令影响范围广且距离远
---------------------------------------------------------------------------------------------------------------------
有时候使用 Ex 命令,能比用普通模式命令更快的完成同样的工作。
比如:
普通模式命令一般操作当前的字符,或者当前行
Ex 命令 可以在任意的位置执行, 这意味着我们无需移动光标就可以使用Ex 命令来作出修改。
但是使得 Ex 命令脱颖而出的最让人赞叹的功能,是它们拥有能够在多行上同时执行的能力。
因此一般来说: Ex 命令 操作范围更大,并且能够在一次的执行中修改多行。
总结起来就是:Ex 命令影响范围范围广并且距离远。