Что на самом деле делает раскладка клавиш "vi-move" в режиме vi Bash?

420
Pak

В разделе «Карта клавиш» в Справочном руководстве по Bash говорится, что одним из приемлемых вариантов является «vi-move». Кажется, нет никакого описания того, что это соответствует. Я хорошо знаком с "vi-command" и "vi-insert", но, похоже, ничего не могу найти относительно "vi-move".

Я надеялся, что этот вопрос пролил свет на некоторые вещи, но не повезло.

0

3 ответа на вопрос

1
memeplex

diff <(bind -p -m vi-move) <(bind -p -m vi-command)не показывает никакой разницы, поэтому я думаю, что они просто синонимы. Тем не менее, документация readline только утверждает, что vi и vi-команда эквивалентны и, несмотря на то, что в одном и том же параграфе упоминается vi-mode, она не может утверждать эквивалентность между этими тремя режимами. Итак, я спросил Чет Рами, и его авторитетный ответ был «да [три одинаковы]».

0
David Pope

При локальном поиске в руководстве по bash строка «vi-move» отображается в разделе «Привязки к режиму VI»:

VI Mode bindings VI Insert Mode functions  "C-D" vi-eof-maybe ... <snip> "C-[" vi-movement-mode ... 

При vimэтом :help ^[показывает это:

 i_CTRL-[ i_<Esc>  <Esc> or CTRL-[ End insert or Replace mode, go back to Normal mode. Finish abbreviation.  Note: If your <Esc> key is hard to hit on your keyboard, train yourself to use CTRL-[. 

Это просто клавиша перехода для перехода из режима вставки в обычный режим, так что я думаю, что vi-moveв основном это обычный режим в vim. Я не уверен, как это сопоставляется с чем-то полезным в Bash. Мои keymapпоказы либо зависят, viлибо в vi-insertзависимости от того, вызываю ли я bash -V, набирая его или нажимая Esc k CRкнопку воспроизведения из истории.

0
Tom Hale

vi-move, vi-commandИ viявляются синонимами одного и та же раскладка (как доказано @memeplex), и являются одним набором активного по vi-movement-modeкоманде.

Карта vi-insertключей активируется editing-mode viкомандой или set -o vi.

Обратите внимание, что в bashv4.3.11 (1) выполнение vi-movement-modeкоманды, когда раскладка клавиатуры emacsактивна, не изменяет приглашение, если оно show-mode-in-promptесть on, но при изменении на vi-editing-modeделает. Обходной путь здесь .