资讯专栏INFORMATION COLUMN

Vim 文本对象指南 (1)

draveness / 2139人阅读

摘要:本文还是介绍一些基本内容关于插件使用可以查看完整配置如果想要在里拥有高效编辑的能力必然要掌握超过单个字符编辑的能力不然就可能出现像之前看到过的一个笑话在你刚开始使用的时候做过什么令你难忘的事情答使用跳转到行也就是说要掌握词句子段落级别的编

本文还是介绍一些基本内容, 关于插件使用, 可以查看完整配置 space-vim.


如果想要在 Vim 里拥有高效编辑的能力, 必然要掌握超过单个字符编辑的能力, 不然就可能出现像之前看到过的一个笑话 :

在你刚开始使用 Vim 的时候做过什么令你 “难忘” 的事情? 答: 使用
j 跳转到 5000 行 :).

也就是说, 要掌握词 (word), 句子 (sentense), 段落 (paragraph) 级别的编辑能力. 在 Vim 里, 这样的概念叫做 文本对象 (text objects) . 详见 Vim 的 help :h text-objects. 另外, 这些概念对于只是对英文表现比较好, 因为英文可以按照空格划分词, 但是中文并不可以.

本文的内容实际很多来自 Vim 的 help. 如果开始知道不懂的时候去查看 Vim 的 help, 基本上也就真正知道如何学习 Vim 了.

对于普通文本文件和常见程序语言结构, Vim 都提供了文本对象. 你可以通过 Vim script 定义新的文本对象.

一个编辑命令的结构

在 Vim 中, 编辑命令 (editing commands) 有着如下的结构:

  

<数字> <操作符> <文本对象或移动命令>

number: 数字用于在文本对象或移动操作上进行多次执行, 比如说, 向后 3 个单词, 向前 2 个段落. 数字是可选的, 可以出现命令(command) 的前面,也可以放在命令的后面.

If the motion includes a count and the operator also had a count before it, the two counts are multiplied. For example: "2d3w" deletes six words.

如果是 motion 和下面所提到的 operator 都有数字修饰, 那么效果是两个数字相乘. 比如, 2d3w 是删除 6 个单词.

operator: 操作符, 比如, change, delete (删除), yank (复制). 操作符也是可选的. 但是如果没有操作符的话, 那么就只剩一个移动命令, 而非一个编辑命令了.

:h operator, Vim 默认提供的 operator 有:

text object 或者 motion 可以是一个文本对象, 比如, 一个单词, 一个句子, 一个段落, 或者是一个移动, 比如, 向下移动一行, 向后翻一页, 到一行末尾.

:h text-objects :

:h motion :

一个编辑命令(editing command) 等于一个操作符加上一个文本对象或者移动, 比如, 删除一个单词, 改变一个句子, 复制一个段落.

an editing command = an operator + a text object/motion

普通文本对象

Vim 为普通文本文件提供了三种类型的文本对象: 词(word), 句子(sentence), 段落(paragraph).

aw - a word (包含在周围的空格)

iw - inner word (包括周围的空格)

Lorem ipsum dolor sit amet...

daw

Lorem dolor sit amet...

a 开头的文本对象包含周围的空格, 以 i 开头的文本对象不包含. 这个原则对所有的文本对象都适用.

w 看起来与 aw 效果差不多. 区别在于光标位置. 比如, 如果用 dw 来删除一个词, 光标必须在词的开头. 如果在除了开头的其他位置使用 dw, 只能删除部分单词. 但是, daw 允许光标在一个词的任何位置删除整个单词.

如果你已经懂得了 word 的 w 与 aw 的区别, 下面句子与段落就已经掌握了, 道理是一样的, 只是将 w 换成了 s 与 p.

句子

as -- a sentence

is -- inner sentence

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

cis

 Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat.

注意, "inner" 文本对象不包含尾部的空格.

段落

ap -- a paragraph

ip -- inner paragraph

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis 
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt
mollit anim id est laborum.

dap

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt
mollit anim id est laborum.
移动命令 vs. 文本对象命令

一个使用移动的命令, 比如, cw, 是从光标处开始生效.

一个使用文本对象的命令, 比如, ciw, 如果光标在何处, Vim 都将在整个文本对象上生效.

是一个移动命令还是一个文本对象命令, 区别在于是否有 a (around) 或者 i (inner) 这样的限制. 对于每个类型的文本对象都是如此. 尽管使用文本对象的方式需要多输入一个字符, 但是这可以节省你的时间将光标移动到 "正确" 的位置.

参考:
[1] Vim Text Objects: The Definitive Guide

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24950.html

相关文章

  • Vim 文本对象指南 (2)

    摘要:接文本对象指南关于插件使用可以查看完整配置编程语言的文本对象基于常见编程语言结构提供了几个常见的文本对象其实都是一对儿符号,主要可以分为成对的标点符号,比如单引号,双引号,反引号。而非文本对象操作时,会从当前光标处开始生效。 接 Vim 文本对象指南 (1), 关于插件使用, 可以查看完整配置 space-vim. 编程语言的文本对象 Vim 基于常见编程语言结构提供了几个常见的文本...

    awesome23 评论0 收藏0
  • Vim实战指南(五):文本替换

    摘要:原文地址实战指南五文本替换在编辑代码时,有时候你希望对变量或者函数重命名。提供了强大的替换功能,比其他普通编辑器的更好用。事实上你打不用如此麻烦,只需下面简单的替换即可本文列出了常用的文本编辑中全局替换的方法。 原文地址:Vim实战指南(五):文本替换 Introduction 在编辑代码时,有时候你希望对变量或者函数重命名。vi提供了强大的替换功能,比其他普通编辑器的ctrl+r更好...

    ad6623 评论0 收藏0
  • Vim实战指南(一):基础编辑命令

    摘要:原文地址实战指南一基础编辑命令和作为两大神级文本编辑器各有利弊,本实战指南不加讨论的介绍本实战指南不是教你按照的键位图来编辑文本,而是从实战的角度,教你如何快速的用来开发你的程序,节省你的开发时间。 原文地址:Vim实战指南(一):基础编辑命令 Introduction Vim和Emacs作为两大神级文本编辑器各有利弊,本实战指南不加讨论的介绍Vim.本实战指南不是教你按照Vim的键位...

    learn_shifeng 评论0 收藏0
  • Vim 学习指南

    摘要:对比显示下一个上一个文件缓存花些时间学习所有这些命令。实现和在插入模式中只要打出单词的首字母,然后按,神奇的事情就发生了宏命令做的一些事把你的动作记录在了寄存器中。是将你最后一次执行的宏命令再次执行的快捷键。学习更多的是记忆训练。 你想尽可能快地自学vim(为大家所熟知的最好的编辑器) 。这是我学习的方法:从细处入手然后慢慢掌握所有技巧。Vim : 设计优良,强壮,快速。 ...

    104828720 评论0 收藏0
  • Vim实战指南(四):ex命令

    摘要:原文地址实战指南四命令是下的一个文本编辑器。你已经见过中的,没错,这些就是来自于命令。当你希望显示某行,输入命令,显示器上才会显示那行。而控制这个显示器显示文本的命令行工具,就是。 原文地址:Vim实战指南(四):ex命令 Introduction ex是Unix下的一个文本编辑器。至于为什么突然讲到这个,那是因为vi就是ex的visual mode。你已经见过vi中的:w, :q!,...

    icyfire 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<