在Vim编辑器中删除行的空白


12

我在文件中有类似以下内容的文本:

  sample text
    some random text
            even more random text
text with no indent
 worst indention

我需要删除每一行之前的空白区域。一行我要做的是 0dw

我可以使用重复相同的命令。但通过手动导航到下一行。

但是有没有办法将“ 0dw”应用于这些行呢?

我想有一种使用宏的方法,但是我以前没有使用过。但是,如果没有其他选择,我愿意学习它们。


+1个好问题,我最终做了很多相同的事情。并欢迎来到该网站。
Sardathrion-反对SE滥用2012年

Answers:


10
:%s/^\s\+
" Same thing (:le = :left = left-align given range):
:%le

http://vim.wikia.com/wiki/Remove_unwanted_spaces处了解更多信息。

如果要对特定范围的行执行此操作:

:19,25s/^\s\+//

顺便说一句,开始学习vim的最佳方法是执行vimtutor命令,它将教您如何在Vim编辑器中使用Vim。


1
:le很棒,非常感谢您的选择和链接:)
saiy2k 2012年

3
+1提提Vimtutor以及一个很好的答案。
Sardathrion-反对SE滥用2012年

1
通过使用V并在周围移动光标来选择相关的行以扩展行选择。然后按:以自动输入'<,'>,然后可以使用Nikhil的regexp。
UncleZeiv 2012年

1
另一种处理一系列行的方法(因为我总是忘记行号)是标记2行并在标记上进行操作。例如,转到第19行并按'ma',转到第25行并按'mb',然后执行:'a,'bs/^\s\+//
Patrick

7

另一种执行此操作的方法是使用VIM的缩进工具(通常绑定到</ >)。首先,您需要某种方式来指示哪些行将受到影响。您可以使用视觉选择模式或指定其他受影响范围的线的任何其他方式,然后使用任意大的数字或缩进级别来删除。9<通常可以很好地完成此技巧,以从当前行中删除至少9个级别的可能的缩进(制表符/空格)。


3

我已经通过以下简单的步骤来做到这一点:

1. press `v` to go to visual selection mode
2. select the lines you want to affect
3. :'<,'>normal 0dw

第三步说明:

0 导航到行首。

dw 删除单词(空格)。

normal应用命令0dw

'<,'> 在可视模式下对所有选定的行重复法线。


1

ctrl+v允许您执行与您想要的相似但不完全相同的事情。您可以选择一个可视块并将一个命令应用于该批次。


2
我在块模式下选择了这些行,并且此命令有效::'<,'> normal 0dw
saiy2k 2012年

1
@ saiy2k :normal在这里很重要,我认为这是最好的答案。您可以将其发布为答案吗?
吉尔斯(Gilles)'所以
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.