VimMAC + LINUX + VIM + GIT + Latex + Markdownspace-vim

vim 回顾

2017-05-17  本文已影响101人  liuchengxu

下面是一篇旧文,大多是一些已有知识的整理,并不太成熟。欢迎关注专栏 space-vim , 有空我会以 Vim 自带的 help (不妨 :help help 看一下) 为线索, 分享一些关于 Vim 的小知识 ,也会顺带着介绍一下 space-vim 的配置与用法。


vim概览

vim 命令的一般形式

如果对于 vim 不是一个完全的新手,大概能够发现大部分 vim 命令具有以下模式:<code>(command)(text object)</code>.对于更改命令(change)c ,command 部分就是指c,text object (文本对象) 则是光标移动命令(输入时不需要加上括号)。删除命令 d (delete)、复制命令y(yank) 同样适用这种形式。

另外,text object(光标移动命令)可使用数值参数,因此可将数值加在 c、d、y 等命令的文本对象上。例如 d2w 与 2dw 都是删除两个单词的命令。在了解这一点后,其实大部分vim命令都遵循如下模式: <code>(command)(number)(text object)</code> 或者其等效模式: <code>(number)(command)(text object)</code>. 它们的工作方式是这样的:number 与 command 为可选项。如果没有这两部分,只是单纯的光标移动命令;如果加上 number,则出现移动多次的效果;结合command(c、d、y等等)与 text object, 则会得到编辑命令。

当你认识到这些组合的多样性后,vim就成为有强大威力的编辑器了!

按词性划分

动词

动词代表了我们打算对文本进行什么样的操作。例如:

介词

名词代表了我们即将处理的文本。Vim 中有一个专门的术语叫做文本对象(text object),下面是一些文本对象的示例:

介词

介词界定了待编辑文本的范围或者位置。例如:

下面是几个有关范围的示意图,你们感受一下:

range

组词为句

有了这些基本的语言元素,我们就可以着手构造一些简单的命令了。文本编辑命令的基本语法如下:动词 (介词) 名词, 其中介词并非必要.

下面是一些例子(如果熟悉了上面的概念,你将会看到这些例子非常容易理解),请亲自在 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

按操作划分

保存退出

下列操作都是在命令行模式下,即退出操作为输入<code>:q</code>.

在当前行 ( current line ) 有效的移动光标

当光标从一点移动到另外一点,在这两点之间的文本(包括这两个点)称作被“跨过”,这里的命令也被称作是 motion。(简单说明一下,后面会用到这个重要的概念)

在整个文件 ( file ) 里有效的移动光标

快速进入插入模式 ( insert mode )

在可视模式 ( visual mode ) 下选中

在 visual mode 选中的内容会被高亮,可能经常会有以下几个操作。

在非可视选择模式下剪切和拷贝

替换(更改)文本

粘贴

vim 进阶

使用数字

在很多 vim 的命令之前都可以使用一个数字,这个数字将会告诉 vim 这个命令需要执行几次。比如:

用vim写代码

vim 是程序员专用,自然有一些特性是专门为程序员而设计的。这里是一些常用的:

查找替换

s指substitute(代替,替换的意思),g指global。

小技巧

调整本行内容位置

参考:

  1. Vim学习笔记
  2. 学习vi与vim编辑器 第七版 中文 东南大学出版社
  3. 一起来说vim语
上一篇 下一篇

猜你喜欢

热点阅读