在Vim中编辑时删除各种空格

时间:2011-10-27 19:57:01

标签: vim newline whitespace

所以经常在使用Vim进行编辑时,我会遇到各种各样的情况,即空白给我带来麻烦。例如,假设我有这样的评论:

#This program was featured on the Today show, it is an algorithm for promoting world peace in third-world countries
#given the name of that country and the name of a celebrity to endorse its cause

例如,如果我想修剪线条以便它们转到X字符,我最终会在顶行中间的某处放置一个换行符(在点击换行符和自动缩进后):< / p>

#This program was featured on the Today show, it is an algorithm for promoting
world peace in third-world countries
#given the name of that country and the name of a celebrity to endorse its cause

然后我在行的开头添加一个#,这一切都很好,但是我希望那行也排成一行。为此,我必须删除换行符,下一行缩进的所有空格,然后是注释#mark。这样做并不需要花费很长时间,但是这种情况和类似的情况都会在一天的编码中累积起来。

现在上面的例子非常具体,但我的问题不是。在Vim中删除所有空格包含NEWLINES直到下一个非空格字符的好方法是什么?如果Vim已经有了这样做的动作,那就太棒了,但如果没有,有没有人有他们用来做上述可能映射到密钥的最喜欢的Vim函数?至少,我错过了一些Vim使用习惯用法,这使我甚至无法担心这种情况吗?

编辑:格式化宽度虽然有用且适用于上述情况,但不是此问题的重点。我更关心的是空格删除不是在一行的末尾停止,而是继续到下一行的第一个非空白字符。

3 个答案:

答案 0 :(得分:1)

您真的只想重新格式化该评论以适应当前的'textwidth'。如果注释是一个段落(即由上面和下面的一行空格分隔),那么你可以使用gqipgq是重新格式化命令,ip是“内部-paragraph“text object”重新格式化它。如果它不是独立段落,您可以直观地选择这些行,然后使用gq

这可能也依赖于正确设置'formatoptions'以确保正确处理注释字符,但在很多情况下ftplugin已经完成了。

答案 1 :(得分:1)

这是一段时间之后,但我发现有一个命令可以在90%的情况下完成我需要的操作:

J --  join line below to the current one

答案 2 :(得分:0)

此命令似乎有效:

:.s/\W*$\n\W*//g

它使用替换来删除直到行尾的空格和最后的新行。

在这个例子中:

testting                 aad        $            
asdjkasdjsdaksddjk$

(要查看vim中的元字符,请使用命令:set list

如果您将光标放在第一行并使用第一个命令,它将删除从aad到$的所有内容(不包括aad但包括$和换行符。)

另外,请注意您正在做的事情,使用外部程序为您设置注释格式要高效得多。特别是,par是一个很棒的小型C程序,可以编辑文本并将其包装到所需的长度。

如果你的路径中有par,那么做你想要做的就像用Shift+v选择评论块并运行命令一样简单

:!par 40pgr

其中40是列中所需的宽度。

如果您感觉很乱,请在C / perl / C ++ / python中编写自己的程序,编辑您喜欢的注释,然后将其放入路径并使用外部过滤器命令:!来处理文本块它