如何使用Vim将指定字符的剩余行填充到某列?例如,假设光标位于第四列,我想使用短划线填充当前行的剩余部分,直到第80列。我该怎么做?
这是一个实现你所要求的功能,还有一点。
>它从当前行尾填充行,而不是光标位置
>它强制在目前在线上和重复的字符之间的一个空格
>它允许您指定任何字符串以填充其余的行
>它使用vim的文本宽度设置来决定线应该有多长
(而不是仅仅假定80个字符)
功能定义如下:
" fill rest of line with characters function! FillLine( str ) " set tw to the desired total length let tw = &textwidth if tw==0 | let tw = 80 | endif " strip trailing spaces first .s/[[:space:]]*$// " calculate total number of 'str's to insert let reps = (tw - col("$")) / len(a:str) " insert them,if there's room,removing trailing spaces (though forcing " there to be one) if reps > 0 .s/$/\=(' '.repeat(a:str,reps))/ endif endfunction
将其插入到.vimrc中,并对其进行映射,例如。
map <F12> :call FillLine( '-' )
然后您可以按F12将连字符应用到当前行
注意:这可能很容易扩展到VISUAL模式下的选择,但目前仅适用于单行。