Чому експорт vim як EDITOR в zsh відключає комбінації клавіш?


23

Моє .zshrcвиглядає так:

export EDITOR="/usr/bin/vim"

Тепер, коли я відкриваю термінал і ввожу ярлик клавіатури, як ctrlaщоб перейти до початку рядка, це не працює. Натомість рядок ^A(або якась інша рядок, залежно від введеного ярлика) потрапляє до терміналу:

emlai:~ % ^A

Якщо вилучити слово exportз мого, .zshrcкомбінації клавіш працюють належним чином:

EDITOR="/usr/bin/vim"

Експорт EDITORяк щось інше, ніж vimзмушує комбінації клавіш працювати, наприклад:

export EDITOR="/usr/bin/nano"

Чому це відбувається?

Я також перевірив це bash, і комбінації клавіш працюють належним чином у всіх випадках.

Відповіді:


27

zshЯк і більшість сучасних оболонок, для редагування командного рядка є вибір між двома різними відображеннями клавіатури: viодним та emacsодним. У деяких оболонках (таких як tcshабо на readlineоснові подібних bash) emacsодин є типовим і, ймовірно, тим, який ви очікуєте.

З zsh, ви отримуєте emacsрежим за замовчуванням , якщо $EDITORабо $VISUALмістить vi(якщо ви vi/ nvi/ vim/ elvisкористувач (хоча також vimacsі якщо $EDITORє ...), передбачає , що ви віддаєте перевагу режим)./home/victor/bin/emacszshvi

Щоб примусити певний режим незалежно від значення $EDITOR, додайте:

bindkey -e # for emacs
bindkey -v # for vi

або їх більш портативний еквівалент:

set -o emacs
set -o vi

до вашого ~/.zshrc. Побачити

info -f zsh -n Keymaps

для деталей.


Цікаво. Чи є якісь причини використовувати bindkeyбільше set -o?
зеніт

@zenith, певно, ні. bindkeyце tcsh спосіб і оригінальний спосіб. Сьогодні вони повинні бути рівнозначними.
Стефан Шазелас
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.