\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}替换行开头的四个空格?
答案 0 :(得分:3)
s/.../.../
的模式部分中有意义的部分在替换部分中并不一定有意义。该模式是(Vim的想法)正则表达式。替换是一个包含一些特殊快捷方式的字符串。非常不同的野兽。
答案 1 :(得分:2)
直观地说,如果你能以1美元买一个苹果,为什么你不能吃一美元,你可以吃一个苹果?
从技术上讲,替换命令[range]s[ubstitute]/pattern/replacement/[flags] [count]
以不同方式解释pattern
和replacement
。模式是正则表达式(:help pattern
);替换不是(:help sub-replace-special
)。 \s
是正则表达式中的空格,但不是替换。
答案 2 :(得分:2)
\s
代表任何空白字符,如制表符或空格。 vim无法知道您想要替换哪个字符。
要使用相同的字符替换,请使用:%s/^\(\s\)\{4\}/\1\1/g