Последнее обновление моего опыта
Часть 0"+y$dd
в следующем отображении - это действительно то, о чем вы должны тщательно подумать и адаптировать ее на свой вкус / рабочий процесс / опыт.
Для Например, очень часто я оказывался в буфере с несколькими строками, где я хотел выполнить только ту, на которой находится курсор; в этом случае я могу использовать 0"+y$dd:%d<CR>
вместо 0"+y$dd
.
И это только один из возможных сценариев ios.
Окончательный ответ для тех, кому нравится vim
- Установите
vim
в качестве EDITOR
/ VISUAL
, чтобы при редактировании командной строки вы использовали vim
для ее редактирования. - Put
au BufEnter /tmp/bash-fc.* nn <Leader>d 0"+y$dd:wq<CR>
в вашем ~/.vimrc
файле для сопоставления Leader d (который вы редко будете использовать при редактировании команды) для действия "удалить текущую строку в регистр +
без завершающего EOL». - Когда вы закончите редактирование команды в редакторе
vim
, нажмите Escape Leader d . - Вставьте буфер обмена в терминал (это зависит от терминала).
Оригинальный ответ
Мне часто нужно делать то же самое, и я делаю это следующим образом. (Я обычно использую set -o vi
в bash
, поэтому пункты 1 и 2 ниже отличаются, если вы используете set -o emacs
, значение по умолчанию; в зависимости от вашего вопроса, похоже, что пункты 1 и 2 объединены в Ctrl + x , за которым следует Ctrl + e , который сложнее набрать, imho.)
- hit Escape для перехода в обычный режим,
- нажмите v , чтобы войти в редактор для редактирования команды,
- отредактируйте команду, как мне нравится,
(Здесь вы задаете вопрос.)
Hit
Escape 0 " + y $ d d : w q ,
- Примечание: 0 " + y $ , а не просто " + y y , так как последний также скопировал бы новую строку, и это привело бы к выполнению команды после ее вставки в командную строку,
вставьте буфер в команду line
- как это сделать, я думаю, зависит от используемого вами терминала; я нажал Ctrl + Alt + v in
URxvt
.
перейти к утверждению / ручному редактированию.
Очевидно, что это всего лишь обходной путь, заключающийся в копировании отредактированной команды в буфер обмена перед удалением всего команда, чтобы ничего не выполнялось при выходе из редактора, однако это лучшее, что я могу получить для себя.
Обновление
Как мои EDITOR
(и * 11 48 *) равно vim
, когда я редактирую команду, я редактирую ее в vim
.
В этом отношении я заметил, что буфер называется /tmp/bash-fc.random
, где random
6-символьная альфанумери c случайная строка.
Это дает много возможностей, если вы используете vim
в качестве редактора, так как вы можете определить некоторое отображение в вашем .vimrc
для выполнения вся последовательность Escape 0 " + y $ d * ** 1173 тысяча сто семьдесят два * д * ** 1175 тысяча сто семьдесят четыре *: * +1177 * W * * 1 179 Q . Например, одна команда, которую вы редко используете при редактировании командной строки: Leader d ; поэтому вы можете поместить следующий map
пинг в ваш .vimrc
файл
au BufEnter /tmp/bash-fc.* nn <Leader>d 0"+y$dd:wq<CR>
, чтобы шаг 4 в приведенном выше рецепте стал
хит
Escape Лидер d