缩进与条件

我想用缩进5个空格每行,当所有的下一个条件相匹配:

1)一个空行后
2)当行以大写字母开头
3)当线路有80多字符时文​​件没有文本宽度设置
4)当线路有更多的则(文本宽度-10)字符时,该文件有一个文本宽度集
下一行不能以大写字母开头。

谁能帮我?

--------------解决方案-------------

这是完全未经测试,我敢肯定,有更优雅的方式,但是这应该给你一个大概的了解。 我扫描一次文件的一种的每一行,并缩进,如果你的任何一个条件。

function! Indenter()
let winview=winsaveview()
try
let this_line_num=1
let tw = &textwidth
while this_line_num <= line("$")
let thisline=getline(this_line_num)
let lastline=getline(this_line_num-1)
let firstchar=substitute(matchstr(thisline,"^ *.")," ","","g")
if ( matchstr(lastline,"^.") == "" && this_line_num > 1 )
\ || firstchar =~# "[AZ]"
\ || ( tw == 0 && strlen(thisline) > 80 )
\ || ( tw != 0 && strlen(thisline) > tw-10
\ && firstchar !~# "[AZ]" )
sil exe this_line_num . "s#^# #"
endif
let this_line_num+=1
endwhile
finally
call winrestview(winview)
endtry
endfunction

我假设“空线”是指无空白(因此matchstr(lastline,"^.")以及包含文本行能有前导空格(因此substitute(matchstr())命令来获得的第一个非空白字符。

希望这可以帮助。 让我知道,如果它落在平在它的面孔。

分类:VIM 时间:2015-03-15 人气:0
本文关键词: VIM,压痕
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.564 (s). 10 q(s)