删除尾随空格,替代替代命令

时间:2020-06-24 04:01:41

标签: vim

要删除一行或整个文件中的尾随空白,我可以这样做:

:[range]s/\s\+$//

但是,我想知道在普通模式下是否有一种简单的方法,例如,如果该行是:

Hi, I am a line           |

我的光标经过了e,是否有比普通模式下执行dTe更通用的命令?我能找到的下一个最佳选择是dg_,但这太过分了。然后,另一个选择可能是gElD

1 个答案:

答案 0 :(得分:1)

没有:substitute

的通用方式

使用 diw 可以将多个空白(包括制表符)删除,而光标位于其中一个空白(如示例中)。

这适用于任何空白序列:结尾,前导等。

使用 dw 从光标删除到序列末尾。当您想重新缩进一条线或修复对齐方式时,这很有用。

因为这与上一个/下一个单词的第一个/最后一个字符无关,所以这是最通用的方式。

使用带有:substitute的映射

使用nmap <leader>tr :%s/\s\+$//通过按 \ tr (假定原始mapleader 1 来删除整个缓冲区中的所有尾随空白。

以最适合您的方式替换tr

省略映射中的%,使其仅在当前行上起作用。

-

作为旁注:使用set list listchars=trail:·显示结尾的空格(将·替换为您喜欢的任何字符)。

-

1 删除所有空格可能不是您想要的,尤其是在使用版本控制系统并且文件中包含您自己未添加的空格时。