如何用Vim删除点后的所有点和数字

时间:2014-10-06 07:40:28

标签: vim

已更新

我扫描一页,我有许多带点和数字的线条,如下所示。由于扫描,数字非常不规则。数字之间可以有空格或点。

g. Problem-Solving Strategy: Use Logical Reasoning .........................1. 3
h. Problem-Solving Strategy: Use a Venn Diagram ..............................1 4
i. Review: Problem-Solving Strategies .................................... 1 5
(and more lines)
a. Scientific Notation ............................................... 2. 1 -22
b. Variable Expressions .................................................. .24 -26
c. Functions ....................................................................3.  8-39

现在我要编辑这个没有点和数字的点后用vim。

g. Problem-Solving Strategy: Use Logical Reasoning
h. Problem-Solving Strategy: Use a Venn Diagram 
i. Review: Problem-Solving Strategies 
(and more lines)
a. Scientific Notation 
b. Variable Expressions 
c. Functions

目前我正在逐行进行,需要花费很多时间。

我想知道是否有更好更短的方法来使用VIM。

2 个答案:

答案 0 :(得分:2)

您可以使用简单的替换删除尾随的东西,锚定到行的末尾($),替换可选的空格,点,可选的空格和没有任何内容的数字:

:%s/\s*\.\+\s*\d\+$//

因为数字似乎非常不规则(根据你的例子),我们最后需要更宽松。为此,我使用了一个带有命名组的集合; [:space:]相当于\s(但可以在[...]集合中使用)。

:%s/\s*\.\+[-.[:digit:][:space:]]\+$/

答案 1 :(得分:1)

我会这样做:

:%norm / \ze\.\.^MD<CR>      ^M is Ctrl+V followed by Enter

或替换:

:%s/\zs \.\..*<CR>