Как заполнить строку символом x до столбца y с помощью Vim

29
задан John Topley 29 July 2010 в 15:17
поделиться

4 ответа

Вот функция, которая реализует то, что вы просите, и немного больше.

  • Он заполняет строку от текущего конца строки, а не от позиции курсора.
  • Он устанавливает единый пробел между тем, что в данный момент находится в строке, и повторяющимися символами.
  • Он позволяет вам указать любую строку для заполнения остальная часть строки с
  • . Он использует параметр vim 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 , чтобы применить дефис к текущей строке

Примечание: это, вероятно, можно было бы легко расширить, чтобы воздействовать на выделение в ВИЗУАЛЬНОМ режиме, но в настоящее время работает для одиночных только линии. *

24
ответ дан 28 November 2019 в 00:43
поделиться

Я действительно наткнулся на это, пытаясь выровнять столбцы. На всякий случай, если кто-то еще сделает то же самое, этот поток может быть полезен: Как вставить пробелы до столбца X, чтобы выстроить строки в столбцы?

0
ответ дан stu-b-doo 28 November 2019 в 00:43
поделиться

Если я правильно понимаю вопрос, это можно сделать следующим образом: в обычном режиме вычтите текущую позицию столбца курсора из желаемого конечного столбца, затем введите результат, за которым следует 'i', чтобы войти в режим вставки, затем персонаж, которым вы хотите заполнить пространство. Закончите, вернувшись в нормальный режим. Например, при наведении курсора на четвертый столбец в нормальном режиме, если вы хотите заполнить остальную часть строки до столбца 80 тире, введите 76i-, затем Esc или Ctrl- [, чтобы вернуться в нормальный режим. В результате должно появиться 76 тире, начиная с столбца 4 и заканчивая столбцом 79.

5
ответ дан 28 November 2019 в 00:43
поделиться

Этот ответ отвечает на ваш вопрос. Просто замените вычисление len на желаемый номер столбца (может быть +/- 1, я никогда не вспомню) и удалите заключительные двойные кавычки, добавленные заменой.

2
ответ дан 28 November 2019 в 00:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: