Вот функция, которая реализует то, что вы просите, и немного больше.
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
Вставьте это в свой .vimrc
и сделайте сопоставление с ним, например
map <F12> :call FillLine( '-' )
Затем вы можете нажать F12
, чтобы применить дефис к текущей строке
Примечание: это, вероятно, можно было бы легко расширить, чтобы воздействовать на выделение в ВИЗУАЛЬНОМ режиме, но в настоящее время работает для одиночных только линии. *
Я действительно наткнулся на это, пытаясь выровнять столбцы. На всякий случай, если кто-то еще сделает то же самое, этот поток может быть полезен: Как вставить пробелы до столбца X, чтобы выстроить строки в столбцы?
Если я правильно понимаю вопрос, это можно сделать следующим образом: в обычном режиме вычтите текущую позицию столбца курсора из желаемого конечного столбца, затем введите результат, за которым следует 'i', чтобы войти в режим вставки, затем персонаж, которым вы хотите заполнить пространство. Закончите, вернувшись в нормальный режим. Например, при наведении курсора на четвертый столбец в нормальном режиме, если вы хотите заполнить остальную часть строки до столбца 80 тире, введите 76i-, затем Esc или Ctrl- [, чтобы вернуться в нормальный режим. В результате должно появиться 76 тире, начиная с столбца 4 и заканчивая столбцом 79.
Этот ответ отвечает на ваш вопрос. Просто замените вычисление len на желаемый номер столбца (может быть +/- 1, я никогда не вспомню) и удалите заключительные двойные кавычки, добавленные заменой.