Intereting Posts
Скрипт для проверки файловой системы только для чтения Как бороться с растущими файлами журнала BIND9 Ключевое слово xmodmap не работает Время загрузки M.2 NVMe PCIe намного медленнее, чем у старого SATA SSD Различия между% pre и% post в Kickstart на CentOS? Как вы получаете парольную фразу из шестнадцатеричного ключа wep? Как исправить ошибку суперблока BTRFS после изменения размера / сжатия (BTRFS: невозможно получить супербуферную головку для bytenr 274877906944) Vim, как удалить из позиции курсора CURRENT, до конца строки и следующих N строк? Ленивый размонтировать корневые джейлы Запускать скрипт при загрузке диспетчера окон с использованием файла автозапуска с правами root Apache – 403 Запрещено Удалить все строки текста, которые не являются всеми числами Как я `umount` / proc? ошибка backports при попытке получить killer wireless-ac 1535, работающий в linux mint 17.3 Создайте cpio-файл с различным абсолютным каталогом

Восстановить последний аргумент последней команды в режиме bash 'vi

При использовании режима vi в bash (set -o vi) можно ли восстановить последний аргумент последней выполненной команды? Это выполняется в режиме emacs с ESC + . , и я хотел бы сделать это и в режиме vi.

Я знаю, что bash предоставляет !$ И $_ , но они не расширены, и я считаю довольно опасным использовать их напрямую.

Я пробовал (без каких-либо успехов) некоторые решения, которые я нашел в Stack Overflow об изменении .inputrc и добавлении:

 set editing-mode vi set keymap vi-insert "\e.": yank-last-arg "\e_": yank-last-arg 

Я переключаюсь в режим vi в bash, но я довольно привык к ESC + . и было бы неплохо иметь возможность использовать его или найти быструю и легкую замену.

EDIT: этот вопрос был помечен как дубликат аналогичного, который задает вопрос о том, как восстановить последний аргумент с помощью Alt + S. Я специально спрашивал о ESC +. (это ярлык, к которому я привык, и на него не распространяется другой ответ).

EDIT: для дополнения решения @chaos: следующее связывание делает ESC +. (ну, действительно, «.») вставьте последний аргумент, но вы потеряете функцию точки Vi (.):

 bind -m vi-command ".":insert-last-argument 

Для меня это работает, когда я добавляю следующее в свой .inputrc :

 $if mode=vi "\e.":yank-last-arg $endif 

Затем при изменении в bash на лету -inputrc необходимо прочитать снова:

 set -o vi bind -f .inputrc 

Теперь я могу получить последний аргумент с alt + . ,

Я использовал _ (в обычном режиме) для этого. Я нашел его зарегистрированным здесь http://www.catonmat.net/download/bash-vi-editing-mode-cheat-sheet.txt .

Также легко запомнить:

  • $_ расширяется до последнего аргумента
  • <Esc> + _ выводит его на экран