Мне часто приходится набирать команды, такие как gg"+yG
или, ggdG
и я хотел бы найти более эффективный способ сделать это без необходимости дважды перемещать курсор. Есть ли какая-либо команда, которую я могу использовать, например, y[movement]
чтобы скопировать весь буфер без перемещения курсора?
28
mmgg"+yG`m
и никогда не думал об этом. Спасибо, это происходит прямо в .vimrc.C-o
дважды использовать, чтобы вернуться.Другое решение - использовать плагин vim-textobj-whole . По умолчанию этот плагин предоставляет текстовый объект
ae
для всего буфера,ie
для всего буфера, за исключением начальных и конечных пустых строк.Этот плагин зависит от vim-textobj-user от того же автора, что позволяет пользователям удобно определять любые текстовые объекты. Есть много плагинов, которые хорошо используют это.
источник
По умолчанию не существует текстового объекта для всего файла, но его можно создать с помощью
omap
. В этом случае это будет выглядеть примерно так:Вот разбивка того, как это работает:
Заметки:
Ctrluможет использоваться в режиме командной строки для удаления всего, что находится слева от позиции курсора. Причина, по которой это делается, состоит в том, что если вы вводите командную строку прямо из визуального режима, она автоматически вставляется
'<,'>
в командную строку, а это не то, что нам нужно. Я бы также предложил вам использовать что-то другоеf
, потому чтоf
обычно используется для перехода к следующему искомому символу в строке. Например,fi
перейдем к следующемуi
на текущей строке.Соответствующие разделы справки:
источник
``
в конец вернет курсор в предыдущее место.Вот несколько быстрых и грязных отображений для выполнения задачи:
Теперь вы можете использовать
yY
и,dD
чтобы восстановить / удалить соответственно. Это не так хорошо, как использование полноценного текстового объекта, но иногда самые простые решения являются лучшими.Для получения дополнительной помощи см .:
источник