【转】一起来说 Vim 语
2015-11-21 22:36
411 查看
作为一款古老而具有持久生命力的编辑器,Vim 自有它的强大之处。很多人觉得 Vim 的学习曲线太陡峭了,为了能够把 Vim 用得风生水起,不得不记忆大量的命令。如果你是 Vim 新手,刚入门就开始面对着浩如烟海的命令逐条学习,我相信你一定会逐渐失去对它的兴趣。其实,Vim 以一种近乎自然语言的方式帮助你完成文本的编辑工作。只需要熟悉几条简单的语法,你就会坐在旋转座椅上前后打转,感慨美妙的生活又回来了。
我们假设你已经了解了 Vim 的几种常用的工作模式(正常模式、插入模式、命令模式等),如果你还不了解,请先阅读 这里。现在就让我们一起来学习一下 Vim 语吧。
![](https://dn-linuxcn.qbox.me/data/attachment/album/201511/19/234751u8n7nrfm6fkuczwu.png)
引号或者各种括号所包含的文本称作一个文本块。
下面是几个有关范围的示意图,你们感受一下:
![](https://dn-linuxcn.qbox.me/data/attachment/album/201511/19/234935avgyfghvtfyheshz.png)
下面是一些例子(如果熟悉了上面的概念,你将会看到这些例子非常容易理解),请亲自在 Vim 中试验一番。
下面是几个例子:
另外,数词也可以修饰动词,表示将操作执行 n 次。于是,我们又有了下面的语法:
请看示例:
怎么样,是不是很容易理解?
来源:简书 原文:http://www.jianshu.com/p/a361ce8c97bc 作者:
song4
我们假设你已经了解了 Vim 的几种常用的工作模式(正常模式、插入模式、命令模式等),如果你还不了解,请先阅读 这里。现在就让我们一起来学习一下 Vim 语吧。
![](https://dn-linuxcn.qbox.me/data/attachment/album/201511/19/234751u8n7nrfm6fkuczwu.png)
动词
动词代表了我们打算对文本进行什么样的操作。例如:d表示删除(delete)
r表示替换(replace)
c表示修改(change)
y表示复制(yank)
v表示选取(visual select)
名词
名词代表了我们即将处理的文本。Vim 中有一个专门的术语叫做文本对象(text object),下面是一些文本对象的示例:w表示一个单词(word)
s表示一个句子(sentence)
p表示一个段落(paragraph)
t表示一个 HTML 标签(tag
引号或者各种括号所包含的文本称作一个文本块。
介词
介词界定了待编辑文本的范围或者位置。例如:i表示“在...之内”(inside)
a表示“环绕...”(around)
t表示“到...位置前”(to)
f表示“到...位置上”(forward)
下面是几个有关范围的示意图,你们感受一下:
![](https://dn-linuxcn.qbox.me/data/attachment/album/201511/19/234935avgyfghvtfyheshz.png)
组词为句
有了这些基本的语言元素,我们就可以着手构造一些简单的命令了。文本编辑命令的基本语法如下:动词 介词 名词
下面是一些例子(如果熟悉了上面的概念,你将会看到这些例子非常容易理解),请亲自在 Vim 中试验一番。
# 删除一个段落: delete inside paragraph
dip
# 选取一个句子: visual select inside sentence
vis
# 修改一个单词: change inside word
ciw
# 修改一个单词: change around word
caw
# 删除文本直到字符“x”(不包括字符“x”): delete to x
dtx
# 删除文本直到字符“x”(包括字符“x”): delete forward x
dfx
数词
数词指定了待编辑文本对象的数量,从这个角度而言,数词也可以看作是一种介词。引入数词之后,文本编辑命令的语法就升级成了下面这样:动词 介词/数词 名词
下面是几个例子:
# 修改三个单词:change three words
c3w
# 删除两个单词:delete two words
d2w
另外,数词也可以修饰动词,表示将操作执行 n 次。于是,我们又有了下面的语法:
数词 动词 名词
请看示例:
# 两次删除单词(等价于删除两个单词): twice delete word
2dw
# 三次删除字符(等价于删除三个字符):three times delete character
3x
怎么样,是不是很容易理解?
来源:简书 原文:http://www.jianshu.com/p/a361ce8c97bc 作者:
song4
相关文章推荐
- Linux socket 初步
- VIM编译器显示TAB和TAB转换为空格
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- 菜鸟说给菜鸟听之VIM--入门篇(1)
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断