vim删除前面标签后的空格

时间:2014-10-26 01:49:57

标签: regex vim whitespace vi

我可以删除除vim中的缩进之外的标签吗?即不要删除每行开头的标签。

以下是\t表示标签的示例:

SELECT \t\t col1, col2 \t
\t  SELECT  \t\t\t col1 \t\t col2
\t\t    SELECT  \t\t\t col1 \t\t col2

我想删除文件中的所有空格,但用于缩进的标签除外如下:

SELECT col1, col2
\t  SELECT col1, col2
\t\t    SELECT col1, col2

2 个答案:

答案 0 :(得分:2)

:%s/[^\t]\zs\t\+//g

[^\t]匹配标签以外的任何内容,\zs重置匹配的开头,\t\+匹配1个或多个标签。因此,删除任何非制表符(即不在行的开头)的所有制表符。

答案 1 :(得分:0)

\(^\t*\)\@<= \s*

这意味着:

  • \(^\t*\)是一系列缩进标签
  • \@<=表示后面应该有一系列缩进标签
  • \s*是一个空格,可选地后跟更多的空格