\ s和vim中的空白

时间:2016-11-18 04:24:33

标签: vim whitespace

\s

它可以在一行的开头替换四个空格,零空格。 我们得出\{4\} =空格:%s/^\s\{4\}/ /g =四次的结论。

\s\{2\}

它可以用两个空格替换一行开头的四个空格 很明显,:%s/^\s\{4\}/\s\{2\}/g =两个空格。

<input ng-model="__name" ng-keyup="filterValue(__name, 'stringMax100')" type="text" name="unit-income-name" class="form-control" id="unit-income-name" maxlength="100" required>

$scope.filterValue = function(model, type, $event) {
    console.log(model);
};

为什么命令不能用两个空格替换一行开头的四个空格? 为什么命令意味着用s {2}替换行开头的四个空格?

3 个答案:

答案 0 :(得分:3)

s/.../.../的模式部分中有意义的部分在替换部分中并不一定有意义。该模式是(Vim的想法)正则表达式。替换是一个包含一些特殊快捷方式的字符串。非常不同的野兽。

答案 1 :(得分:2)

直观地说,如果你能以1美元买一个苹果,为什么你不能吃一美元,你可以吃一个苹果?

从技术上讲,替换命令[range]s[ubstitute]/pattern/replacement/[flags] [count]以不同方式解释patternreplacement。模式是正则表达式(:help pattern);替换不是(:help sub-replace-special)。 \s是正则表达式中的空格,但不是替换。

答案 2 :(得分:2)

\s代表任何空白字符,如制表符或空格。 vim无法知道您想要替换哪个字符。

要使用相同的字符替换,请使用:%s/^\(\s\)\{4\}/\1\1/g