Bash в режиме vi: просмотр истории оболочки курсором вверх / вниз, позиция курсора не в конце? - PullRequest
3 голосов
/ 10 мая 2009

Я очень люблю vim и очень хотел бы улучшить мой опыт работы с bash с помощью vi-mode. Однако я настолько привык к поведению emacs, что при просмотре истории оболочки с помощью курсора вверх / вниз курсор располагается в конце строки .

В режиме vi все наоборот; курсор всегда располагается в начале строки. В мозгу действительно сгорело ожидание курсора в конце, использовав bash в режиме emacs ... слишком долго.

Есть ли шанс получить позицию курсора по умолчанию в конце строки в bash vi-mode при просмотре истории оболочки?

Ответы [ 2 ]

5 голосов
/ 13 мая 2009

Вам нужно переназначить курсоры вверх и вниз:

<code>bind -m vi-command '"\201": previous-history'
bind -m vi-command '"\202": next-history'
bind -m vi-command '"\203": end-of-line'
bind -m vi-command '"\e[A": "\201\203"'
bind -m vi-command '"\e[B": "\202\203"'

Это отобразит предыдущую историю, следующую историю и конец строки на несуществующие ключи, а затем отобразит последовательность этих символов вверх и вниз. Вы можете сделать то же самое для j / k, если хотите, но я бы рекомендовал оставить их в покое. Таким образом, вы можете сделать оба.

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

4 голосов
/ 10 мая 2009

Я не знаю, как сделать короткую перекодировку кода истории внутри bash (или readline, действительно).

Однако, действительно ли действительно так сложно ввести Shift-A, когда вы нашли свою строку, чтобы начать добавление в конце?

Если вы собираетесь отказаться от режима emacs, то в какой-то момент вам придется сделать это полностью и принять способ ведения дела vi. Присоединяйтесь к нам, вы знаете, что хотите: -)

...