2013-08-14 3 views
1

У меня есть эта проблема с tmux 1.8: Я хочу установить параметр status-keys в emacs, потому что мне очень не нравятся команды ввода в vi-режиме. Однако при добавлении следующей строки в .tmux.conf не имеет никакого эффекта:Как заставить клавиши статуса статуса emacs в tmux?

set -g status-keys emacs 

Когда tmux перезапуске, tmux show-options -g | grep keys говорит emacs но фактическое поведение VI-стиль.

Корень проблемы - это переменная окружения $EDITOR, которая в моем случае установлена ​​в vim. В документах указывается:

status-keys [vi | emacs] 
    Use vi or emacs-style key bindings in the status line, 
    for example at the command prompt. The default is emacs, 
    unless the VISUAL or EDITOR environment variables are set 
    and contain the string `vi'. 

Таким образом, видимо, когда переменная окружения является «vim», она вынуждает ключи статуса vi.

Есть ли способ переопределить это поведение и заставить подсказку вести себя в стиле emacs, несмотря на переменную окружения? Я могу, очевидно, взломать это (например, запустить tmux с другими переменными env и восстановить оригинал позже), но я надеюсь, что есть чистое решение.

Спасибо!

+1

Для тех, кто нашел эту тему, пытаясь выяснить, что 'делает статус-keys', обратите внимание, что этот вариант был [удален] (https://github.com/tmux/tmux/ blob/2.5/CHANGES # L97) в версии 2.5. (Хотя он не был удален с его страницы man.) –

ответ

2

Оба status-key и mode-keys по умолчанию vi если РЕДАКТОР содержит vi, но это только по умолчанию (во время запуска, до того, как файлы конфигурации обрабатываются). Установка любого из этих параметров в вашей конфигурации должна переопределять значение по умолчанию для EDITOR.

Вы также устанавливаете mode-keys (который контролирует карты ключей, используемые в copy-mode, и команды choose-…)?

set -gw mode-keys emacs 
+1

Я не устанавливаю 'mode-keys', так как я хочу, чтобы это было' vi'. Однако, в отличие от 'status-keys', когда я устанавливаю' mode-keys' в 'emacs', я получаю правильное переопределенное поведение emacs. Похоже, что проблема затрагивает только «status-keys». – Nikita

+0

Я не могу воспроизвести вашу проблему с помощью 'EDITOR = vim tmux -L fresh -f/tmp/t' где'/tmp/t' содержит только 'set -g status-keys emacs': глобальные' status-keys' 'emacs', и я получаю привязки стиля Emacs в строке состояния; глобальные 'mode-keys' окна -' vi', и я получаю привязки стиля vi в 'copy-mode'. Разве ваша сессия не имеет собственного значения для 'status-keys', которая переопределяет ваше глобальное значение? (Убедитесь, что 'tmux show-option | grep keys' не дает выхода.) –

+1

Я сделал именно то, что вы описали, и у меня все еще есть проблема. На данный момент я использовал псевдоним 'tmux' для' EDITOR = VISUAL = tmux' в качестве обходного пути. – Nikita

0

У меня была эта проблема, и я думаю, что я просто понял это. Вы случайно используете ZSH (Z Shell)?

I found this post, который говорит, что ZSH также переключится в режим «vi», если для вашего VISUAL и/или EDITOR установлено значение vi/vim. Таким образом, проблема, которую я испытывал в tmux, как фактически пузырящийся от ZSH!

Вкратце, убедитесь, что вы можете использовать клавиши стиля emacs в своей оболочке вне tmux. Если вы используете ZSH, вы можете добавить bindkey -e в .zshrc, чтобы установить привязки emacs. Тогда в .tmux.conf:

set -g mode-keys emacs 
set -g status-keys emacs 
Смежные вопросы