一起来说 Vim 语
作为一款古老而具有持久生命力的编辑器,vim 自有它的强大之处。很多人觉得 Vim 的学习曲线太陡峭了,为了能够把 Vim 用得风生水起,不得不记忆大量的命令。如果你是 Vim 新手,刚入门就开始面对着浩如烟海的命令逐条学习,我相信你一定会逐渐失去对它的兴趣。其实,Vim 以一种近乎自然语言的方式帮助你完成文本的编辑工作。只需要熟悉几条简单的语法,你就会坐在旋转座椅上前后打转,感慨美妙的生活又回来了。
我们假设你已经了解了 Vim 的几种常用的工作模式(正常模式、插入模式、命令模式等),如果你还不了解,请先阅读 这里。现在就让我们一起来学习一下 Vim 语吧。
动词
动词代表了我们打算对文本进行什么样的操作。例如:
- 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)
下面是几个有关范围的示意图,你们感受一下:

Prepositions
组词为句
有了这些基本的语言元素,我们就可以着手构造一些简单的命令了。文本编辑命令的基本语法如下:
动词 介词 名词
下面是一些例子(如果熟悉了上面的概念,你将会看到这些例子非常容易理解),请亲自在 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
怎么样,是不是很容易理解?
一起来说 Vim 语的更多相关文章
- Vim入门教程
尽管网上有成打的Vim在线教程,但是要么艰深晦涩,要么太过肤浅.本教程的目标让每个阶段都有斩获,从理解它的哲学(将和你终身相伴)到超越现在编辑技巧,成为其中的牛人. 简单来说,本教程的学习方式将使你终 ...
- Vim,一个开放源代码的文本编辑器(转)
Vim,http://linux.21ds.net/2002/03/13/0268dc26fd9c725c23dae68d797935f3/ 作者:Bram Moolenaar 翻译:slimzhao ...
- 我为什么选择Vim
总看到一些飞快敲击键盘而不用鼠标的时候你可以很羡慕和佩服,其实这完全没有必要.就像一个吉他手熟练地弹吉他有必要羡慕吗?一个瓦匠熟练地砌砖有必要羡慕吗?这些都是他们赖以生存的工具而已,熟练地运用工具是理 ...
- ubuntu下linux内核源码阅读工具和调试方法总结
http://blog.chinaunix.net/uid-20940095-id-66148.html 一 linux内核源码阅读工具 windows下当然首选source insight, 但是l ...
- 我的Emacs折腾经验谈(二) Emacs上手难的原因
既然之前说过要写我怎么继续折腾Emacs的,过了一个星期这里就是第二篇了,突然觉得我把blog这样分节不是很好,每次可能要凑一些东西才有该有的篇幅,而且说的东西可能东一点西一点,这样一篇看下来不利于检 ...
- HTML5总结整理
(仅供大家学习分享交流) 一.简介 1.前端开发最核心技术 我们知道,用所谓的网页三剑客已经不能满足需求了,那前端开发究竟要学习什么技术呢?网页最 主要由3部分组成:结构.表现和行为.网页现在新的标准 ...
- 感悟 GNU C 以及将 Vim 打造成 C/C++ 的半自动化 IDE
C 语言在 Linux 系统中的重要性自然是无与伦比.不可替代,所以我写 Linux 江湖系列不可能不提 C 语言.C 语言是我的启蒙语言,感谢 C 语言带领我进入了程序世界.虽然现在不靠它吃饭,但是 ...
- gvim如何显示html属性代码提示? vim 如何显示 javascript属性及方法提示?
gvim如何显示html属性代码 可以在vim中 显示 html, css, js等的属性/方法 提示: 一是: 在 ~/.vim/after/syntax/ 目录中 安装 css-color.vim ...
- 最佳vim技巧
最佳vim技巧----------------------------------------# 信息来源----------------------------------------www.vim ...
随机推荐
- sql的连接查询方式
1 SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据. Join 和 Key 有时为了得到完整的结果,我们需要从两个或更多的表中获取结果.我们就需要执行 join. 数据库中 ...
- PHP 面向对象之自定义类
所谓面向对象就是什么时候什么东西做什么,我们设计类的时候需要想的就是怎么做的内容,那么怎么样的一个类才算是符合OOP的思想呢,答案是:这个类写好之后,在使用的过程中,能准确的代表一个事物,在书写的时候 ...
- 如何在windows上安装部署设置SVN服务器
1 一.准备工作 1.SVN服务器:解压缩包,可以从官方网站下载最新版本. 2.SVN客户端:TortoiseSVN,即常说的小乌龟,是一个客户端程序,用来与服务器端通讯. 2 二.安装服务器和客 ...
- cygwin下的第一次编程记录
今天在window7上安装了cygwin,体验了一把unix,编了个小c,c++程序 先把过程记录下来 1.先删除以前建立的source文件夹 rm -rf source linux删除目录很简单,很 ...
- 远程连接sql server 数据库的方法
今天找了半天,终于解决了如何从本地连接到远程sql server服务器的方法. 1.首先确保打开远程服务器的sql server配置管理器,确保TCP/IP协议开启 2.WebConfig的连接字符格 ...
- hdu 5612 Baby Ming and Matrix games
Baby Ming and Matrix games 题意: 给一个矩形,两个0~9的数字之间隔一个数学运算符(‘+’,’-‘,’*’,’/’),其中’/’表示分数除,再给一个目标的值,问是否存在从一 ...
- phpwind9.0 顶部和底部版权信息永久性修改
过了pw头部和底部版权修改方法,但是每次升级程序后版权又变成了默认的了,还得重新修改,其实有个方法可以永久性修改,底部和顶部随着主题走. pw9全局主题位于/themes/site/目录下, 前面文 ...
- 【技术贴】jsp出现getOutputStream() has already been calle
此错误经常在websphere6.x版本里出现:原因是jsp文件中的尖括号百分号里面有空行或者其他的什么原因,Servlet1.2规范规定了OutputStream只能获得一次,在jsp中实际上已经通 ...
- Linux下fork()、vfork()、clone()和exec()的区别
转自Linux下fork().vfork().clone()和exec()的区别 前三个和最后一个是两个类型.前三个主要是Linux用来创建新的进程(线程)而设计的,exec()系列函数则是用来用指定 ...
- 两种方法,获取磁盘剩余空间--PYTHON
import ctypes import os import platform import sys def get_free_space_mb(folder): """ ...