Рассматривать:
apple
pear
Поместите курсор на первую строку и введите Yp
:
apple
apple
pear
Наведите курсор на pear
строку и введите, .
чтобы повторить последнюю команду. Это повторяет только p
(а не комбинацию Yp
), производя:
apple
apple
pear
apple
Я хотел бы сказать способ .
повторить последние N команд. Что-то вроде 2.
повторения комбинации Yp
для получения:
apple
apple
pear
pear
Конечно, это не сработает - оно повторяется p
дважды. Но идея заключается в том, чтобы «повторить последовательность последних 2 команд».
Я знаю, что могу q
записывать последовательности команд и повторять их @@
, но это решение не идеально, так как требует, чтобы вы все время планировали заранее, тогда как на практике вы часто не понимаете, что вам нужно что-то повторять до тех пор, пока ты сделал это
Есть ли способ добиться того, чего я хочу?
Утешительный приз: Если вышеперечисленное невозможно, можно ли повторить воспроизведение последнего макроса? Например, если я набрал текст @@
для воспроизведения моего последнего макроса, я бы хотел, чтобы последующий .
текст был эквивалентен @@
повторному вводу - чего не происходит (например, если результат @@
зависит от строки, на которой вы находитесь)
nno <silent> @@ @@:sil! call repeat#set('@@', v:count1)<CR>
Но чтобы оно работало, вам нужно установить этот плагин: github.com/tpope/vim-repeatОтветы:
Vim хранит только последнюю выполненную команду, и только она повторяется
.
; по моему мнению, с чем-либо еще будет трудно справиться.Если вы чувствуете необходимость повторить
Yp
комбо как единое целое, вы должны сделать его одной командой. Плагин Tim Pope repeat.vim позволяет легко это делать для пользовательских отображений. Конечно, если вы выберете короткий ключ [последовательность] для сопоставления, вы можете просто быстро набрать его (вместо.
) и даже избежать интеграции repeat.vim.Кстати, мой плагин LineJuggler предоставляет
]d
отображение для дублирования текущей строки, и он поддерживает повторение через repeat.vim.источник
В
Yp
, единственное «изменение», чтобы повторить этоp
. Единственный способ, которым я знаю, чтобы изменить поведение.
в обычном режиме, это добавитьy
кcpoptions
опции:что позволяет вам повторить как последний рывок, так и последнее изменение.
Но это ничего не меняет в вашей проблеме, потому что
Yp
это все еще две команды: рывок, сопровождаемый изменением.Я не думаю, что вы можете получить то, что вы хотите без некоторых нетривиальных сценариев. Вы смотрели на раздел сценариев vim.org ?
источник
Я часто использую
map
для достижения этого эффекта. Например:F12
Повторное нажатие выполнитYpYpYp
и т. Д. Если вы хотите переходить к следующей строке после каждой вставки,Yp+
вместо этого сопоставьте клавишу .источник
Замечательная штуковина, которая является плагином RepeatLast (от нашего собственного @joeytwiddle ), обеспечивает именно эту функциональность посредством нечестивого метода записи всего, что вы делаете в качестве макроса.
Он предоставляет ряд новых сопоставлений, но, если я правильно читаю документацию, для выполнения описанных вами правок вы можете использовать последовательность команд (предполагая, что вы используете значение
<leader>
по умолчанию\
):Yp
Дерните и вставьте / вставьте строкуapple
,j
Двигайтесь вниз по линии, чтобы курсор находился наpear
линии,\D
забудьj
команду,2\.
Повторите две командыY
иp
источник