Как я могу быстро поставить строку, как "==========" в VIM - PullRequest
6 голосов
/ 08 августа 2011

Я редактирую реструктурированные текстовые файлы. Мне часто нужно поместить несколько символов, таких как "= -` ~" в одну строку, и я хочу, чтобы длина строки соответствовала предыдущей строке. Как мне это сделать в vim?

a long long title
=================

Спасибо! * * 1004

Ответы [ 5 ]

17 голосов
/ 08 августа 2011

Другой, который будет работать:

yypv$r=
6 голосов
/ 08 августа 2011

Как насчет yyp:s/./=/g?

Вы можете сопоставить это с ключом, например, :map <F5> yyp:s/./=/g<CR>

2 голосов
/ 28 января 2013

Если ваша строка начинается без пробела:

Hello World    

Нормальный режим:

Y p V r =

Дает:

Hello World
===========

Объяснение

Y -> Дернуть всестрока, например y y
p -> вставить строку
V -> выделить всю строку в визуальной строкеmode r -> заменить все выбранные следующим символом
= -> символ для замены других

Если в строке есть начальный пробел, например:

    Hello World

Использование:

Y p v $ r =

Предоставление:

    Hello World
    ===========

Мы используем v $ визуальный выбор до конца строкивместо того, чтобы использовать V , чтобы выделить все в строке.

Если у вас был конечный пробел, вы можете использовать движение g _ , чтобы получитьдо последнего символа без пробелов.

2 голосов
/ 08 августа 2011

Я бы использовал yypver=, чтобы избежать поиска и переключения кнопок в максимально возможной степени.Конечно, это также может быть сопоставлено с ключом.

0 голосов
/ 08 августа 2011

Когда курсор находится на a long long line, вы можете использовать что-то вроде

:s/\(.*\)/\=submatch(1) . nr2char(13) . repeat('=', strlen(submatch(1)))/

Чтобы упростить подстановку, я бы использовал карту:

nmap __ :s/\(.*\)/\=submatch(1) . nr2char(13) . repeat('=', strlen(submatch(1)))/

Таким образом, вы можете подчеркнуть линию, в которой находится курсор, набрав __.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...