2013-07-31 3 views
10

Мне очень нравится поведение YankRing, которое позволяет мне получить доступ к последним вещам, которые у меня есть y anked или d eleted или c повешены, не задумываясь.Vim Повторить точечный (".") Буфер команды?

Однако дополнительная функция, подобная этой, полностью отсутствует для команды повторения ., чаще всего, когда я печатаю то, что я действительно хочу повторить, а затем случайно переписывая это редактирование, нажав x, чтобы что-то убрать.

Часто можно получить некоторое время, пока визуально-режим дергает то, что я только что напечатал, но это не идеально.

Должно быть очень легко запомнить последние несколько команд.

Вопрос в том, насколько возможно извлечь из Vim представление последней команды, содержащейся в любых магазинах, которые будут делать ., прежде чем он сдуется?

Если это так, как я боюсь, единственный способ - подключить плагин к каждой команде, которая может что-то редактировать, и использовать ее таким образом, чтобы хранить наш собственный повторитель. Это действительно нецелесообразно, потому что я уже представляю, сколько других плагинов будет разбито. Но я все равно действительно хочу эту функцию, если это возможно.

+0

Связанный вопрос [Более мощная версия точки (повтор)] (http://stackoverflow.com/q/16722566). – glts

+0

@glts Я написал, что ... это похоже, но требует подготовки, начиная запись –

+0

Просто научитесь использовать [регистры] (http://stackoverflow.com/questions/1497958/how-to-use-vim-registers? rq = 1) и другие встроенные функции vim imo. Так много плагинов, которые «исправляют» вещи, которые не нуждаются в исправлении. Оператор Dot отлично работает с регистрами. Например, вы можете 'qp' вставить регистр' q' и повторить с '.', но любые изменения, такие как' x', не изменят то, что вы сохранили в любых регистрах, отличных от дефолта. Еще одно замечательное сообщение для прочитайте [здесь] (http://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim?rq=1) –

ответ

1

Завершение ключевого слова и/или ctrl-a в режиме вставки должно отвечать вашим потребностям.

Более янкиноподобное решение должно быть возможным, но, как вы говорите, возможно, слишком навязчивым. Вы сами посмотрели на vim.org, прежде чем просить других сделать это за вас?

+0

Да, я имею в виду, что даже Vim не может понять, что будет делать '.'. Я действительно надеялся, что у кого-то есть исходный патч, чтобы разоблачить его командой. –

+0

. повторяет ваше последнее изменение. На самом деле это очень просто. Точечная команда на самом деле не предназначена для выполнения ряда команд давным-давно, поэтому практически не нужно угадывать, что она собирается делать. Если вы хотите, чтобы более долгосрочные решения использовали макросы и сопоставления. – romainl

2

К сожалению, нет способа получить и воспроизвести команду за командой .. Единственным обходным решением является постоянный режим макросъемки и использовать регистр макросов в качестве замены для команды ..

Эта тактика используется RepeatLast plugin, что может предложить то, что вы хотите.

Смежные вопросы