Как я могу исправить свой ключ удаления в VIM через ssh? (Mac OS X)
Когда я использую VIM в терминале на своей локальной машине (Mac OS X Snow Leopard), ключ удаления действительно является backspace (т.е. деструктивным обратным пространством).
Когда я SSH на конкретный сервер, по какой-то причине он регулярно удаляет (т.е. удаляет символ под курсором).
Как я могу изменить его, чтобы он был последовательным? Я пробовал дюжину решений, но ничего не работает.
Проверка флажка "Удалить отправляет Ctrl-H" в "Настройки терминала" > "Дополнительно" не работает - это неразрушающее обратное пространство.
Я пробовал около сотни различных сопоставлений клавиш в VIM, но безрезультатно.
Интересно, что ключ работает, как ожидалось, когда я набираю команды в VIM (например, : <something>
) - он только прикручивается, когда я редактирую фактический текст. Любые идеи?
Ответы
Ответ 1
Это сработало для меня:
:set backspace=indent,eol,start
Я не уверен точно, что он делает, но он указан как возможное решение здесь и . Я нашел эту строку в файле vimrc, распространяемом вместе с Ubuntu, где поведение клавиши "delete" (иначе называемой "backspace" ) работает как ожидалось без какой-либо другой конфигурации.
Поведение, которое я испытывал, было звуком колокола (без удаления символов) при нажатии клавиши "удалить" mac (иначе называемой клавишей "backspace" ) в режиме вставки. Я использую скомпилированную версию vim 7.3 на "amazon linux" поверх ssh с mac. Нажатие <ctrl-v><delete>
, когда в режиме вставки появилось ^?.
Ответ 2
Пара идей:
-
В вашем файле .vimrc
на удаленном сервере добавьте следующую строку:
set term=linux
-
В вашем файле .bash_profile
(или что-либо, что соответствует вашей оболочке выбора) на удаленном сервере:
stty erase ^H
Примечание. Чтобы сделать это правильно, введите ctrl - v, затем ctrl - h, чтобы ввести символ ^H
.
Кроме того, убедитесь, что в ваших привилегиях терминала отмечены флажки "Удалить отправку Ctrl-H".
Ответ 3
Попробуйте следующее: http://www.alecjacobson.com/weblog/?p=295
Я исправил проблему, изменив настройки Terminal.app. В разделе "Терминал" > "Настройки" выберите "Дополнительно". Установите флажок "Удалить посылает Ctrl-H". Теперь vi и vim должны понимать ключ удаления более интуитивно.
Примечание. Сопоставление клавиши "удалить" в моем файле vimrc показалось, вероятно, правильным способом сделать это, но это много неприятностей. Есть ли причина не делать этого таким образом?
Ответ 4
Попробуйте добавить
set <Del>=<C-v><Del>
в vimrc на целевой машине. Здесь вы должны ввести <C-v> <Del> во время входа на целевую машину. Если это не сработает, отметьте verbose imap <Del>
: это должно сказать вам, был ли какой-либо плагин переназначен <Del>
в режиме вставки.