如何使用Vim将具有指定字符的行的剩余部分填充到某列?例如,假设光标位于第四列,我想用破折号填充当前行的其余部分,直到第80列.我该怎么做?
Con*_*ner 61
你可以做80Ax<Esc>d80|一个更简单的解决方案.
drf*_*lat 24
这是一个实现你要求的功能,稍微多一点.
textwidth设置来决定该行应该有多长(而不是仅假设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
Run Code Online (Sandbox Code Playgroud)
将其插入您的.vimrc,并对其进行映射,例如
map <F12> :call FillLine( '-' )
Run Code Online (Sandbox Code Playgroud)
然后,您可以按F12将连字符应用于当前行
注意:这可能很容易扩展到在VISUAL模式下进行选择,但目前仅适用于单行.*
如果我正确理解了这个问题,可以这样完成:在正常模式下从所需的结束列中减去光标的当前列位置,然后键入结果,然后输入'i'进入插入模式,然后输入要填充的字符与...的空间.通过返回正常模式结束.例如,在正常模式下光标位于第四列时,如果要用破折号填充第80列的其余部分,请键入76i-然后按Esc或Ctrl- [返回正常模式.这应该导致76个破折号从第4列开始到第79列结束.