在编写代码时,我们时常一不留神就在行末多打了几个空格。却又看不出来,即使用 vim-airline 之类的插件能知道有行末空格(trailing spaces),删除起来也特别麻烦。本文就介绍一个我就常用的 vim 快捷键:删除行末空格。

功能实现

Vim 并没有内置的支持,所以我们有正则表达式替换来实现这个功能:

:%s/\s\+$//
  1. 开头的 % 代表匹配当前文件的所有行
  2. \s 代表匹配空格字符,即空格符(Space)和制表符(Tab)
  3. \+ 用于匹配一个及多个。故 \s\+ 代表匹配一个或多个空格字符。
  4. $ 代表匹配行末。

综上,上述命令的作用是匹配行末的一个或多个空格字符并删除它们。

快捷键绑定

如果每次有行末空格,都要输入上节的命令,还是相当麻烦的。对于这种常用命令,最好还是给它绑定一个方便的快捷键。

这里分享我的快捷键,绑定到三个空格:

nmap <leader><Space><Space> :%s/\s\+$//<cr>

这里的 <leader> 我事先设置成了空格(强烈推荐)。因为目的是删除空格,绑定成空格也更好记忆。

另外,用这么多空格(3个)是因为在其它的快捷键中用了空格。

结语

本文中介绍的功能本身挺简单,但重要的是,如果一些命令你经常使用,那么为它设定一个快捷键能极大提升自己的效率。

实际中,这个快捷键是我常使用的使用中的前 5 名。