2008年12月20日星期六

在vim中修改 python 程序的缩进方式

我自己的 VIM 里为 python 设置的缩进为4个空格,但是从网上找到的程序有时是一个空格或两个空格。可以在VIM中用下面的命令改为4空格缩进:
1转4的情况:
:%s/\(^\s*\)\@<=\s\s/    /
2转4的情况
:%s/\(^\(\s\s\)*\)\@<=\s\s/    /
注意:上述命令中,最后的两个斜杠中间是4个空格

这两个命令用到了正则表达式,下面以第一个命令为例进行说明。
  • 这条命令的作用
将每一行开头的每个空格分别替换为4个空格。
  • VIM中替换命令的基本结构
:范围s/被替换掉的字符串/替换为的字符串/选项
其中s表示substitute
  • 具体说明
% 表示整个文件内容
^ 匹配一行的开头
\s 匹配空格
* 表示此符号前面的部分出现0次或多次,例如 \s* 匹配0个或多个空格
\(...\) 表示分组
\@<= 表示此符号之前的部分必须位于匹配结果之前(不准确),称为“向前查看”。 \(^\s*\)\@<= 意为所匹配结果到此行开头什么都没有或只有空格
在Vim中使用“:help regex”可以查看关于正则表达式的帮助信息,非常详细。也可以使用这样的命令“:help \@<=”直接找到相关的帮助信息。当然也可以搜索google

另外,网上有大量关于perl的正则表达式教程,原理基本相同。其中(?=)即对应为Vim中的\@<=,另一个区别是
# Perl的写法
(?<=查看内容)匹配内容

# Vim的写法
\(查看内容\)\@<=匹配内容

没有评论:

发表评论


相关文章

Widget by Hoctro