Клавиши со стрелками в Linux vi не работают в режиме вставки
95
Мои клавиши со стрелками не работают в vi в режиме вставки дома, каждая из них просто вставляет новую строку и заглавную букву, например «A». Есть способ исправить это?
@Paul Nathan - Если решение - emacs, то я не хочу знать, в чем проблема.
Час. Оуэнс
Ответы:
107
Я предполагаю, что вы используете vim, поскольку он помечен как Linux. Пытаться:
:set nocompatible
(Вы можете настроить свой .vimrc с этим, добавив к нему эту команду. Создайте новый файл .vimrc, если он еще не присутствует в вашем домашнем каталоге, запустите, echo $HOMEчтобы проверить путь к домашнему каталогу.)
Убедитесь, что вы запускаете vi с помощью команды, vimа не vi. Большинство расширенных и полезных функций vimпо умолчанию отключены, если вы не запустите его с vim.
птс
1
@pts - только на неработающих системах. Запуск vim как vi на всех моих ящиках работает нормально; однако есть несколько ящиков CentOS, которые я использовал, которые демонстрируют поведение, о котором вы говорите.
Час. Оуэнс
Может ли кто-нибудь отредактировать этот ответ, чтобы включить в него то, как он будет выглядеть в vimrc?
Стефан
1
@Stephan Add set nocompatibleв отдельной строке в .vimrc
Мэтью Уилкоксон
В Ubuntu я решил это, просто установив vim (sudo apt install vim), с этого момента vi отлично работает с клавишами со стрелками в режиме вставки. Изменить: теперь я вижу, что об этом уже упоминал Хан ниже здесь.
pizzamonster
74
Ubuntu по умолчанию поставляется с ОС vim-tiny, в которой нет всех наворотов, которые есть у vim.
Сделайте быстрый доступ sudo apt-get install vimко всем интересным функциям, о которых все говорят.
Это было именно то, что мне нужно в mint linux. Установив vim, я все еще мог начать использовать vi, и теперь была включена подсветка всего кода. Какие фантастические знания о Linux :)
wired00
1
Это сработало для моего Raspberry Pi (Jessie Lite). У меня
возникла
35
:set term=builtin_ansi
исправил это для меня. Вы можете либо вставить его в vim, находясь в escape-режиме (режим звукового сигнала), либо добавить его в конец ~ / .vimrc без начального ":"
: set term = xterm также может работать (и его легче запомнить).
Alexx Roche
К вашему сведению, я :set term=builtin_ansiработал на меня. :set term=xtermне.
FractalSpace
на одном из моих Linux-компьютеров я использую export TERM=xtermв командной строке перед вызовом vi, а затем :set term=xtermв vim 7.2 работает для меня
Alexx Roche
Отлично работает! Спасибо!
Ахмедзянов Данилиан 01
Это работает, чтобы включить навигацию с помощью клавиш со стрелками, но полностью убило всю цветовую кодировку в терминале.
Кен Ингрэм
16
vi не поддерживает клавиши со стрелками в режиме вставки. Используйте vim. Хотя ваш vi может быть просто ссылкой на vim, он может быть настроен так, чтобы вести себя как "исходный" vi и, таким образом, отключать клавиши со стрелками. Просто вызовите vim напрямую.
Хотя это не решение, это лучшее объяснение поведения (imo), поясняющее разницу между viи vim. Но на моей коробке vimотпечатки command not found: D
Daniel W.
@DanFromGermany Может быть, у вас установлен только vi, а не vim. Пожалуйста, попробуйте установить vim через менеджер пакетов вашей системы Linux, если вы хотите его использовать.
Lothar
:set term=ansiу меня сработало спасибо Raz . вы говорите, что он «не поддерживает». Мне интересно, вы сказали это, потому что vim-tinyпакет ubuntu, который я использую, отличается от ванильного, viили в нем тоже будут работать настройки термина?
n611x007 04
8
Еще один вариант: эта проблема у меня появилась после некоторых изменений .vimrc. Согласованный поиск в конечном итоге показал, что моя умная перетрансляция ESC в нормальном режиме была не очень хорошей идеей. Удаление решило проблему:
" this is NOT something you want in .vimrc:
" In normal mode, hitting Esc turns off search highlights:
nmap <ESC> :nohl<CR> " Do NOT add this to .vimrc
Мне кажется, что это тоже сработало с использованием контейнера Docker.
Ohlando
1
Это тоже сработало для меня. Я использую cmd.exe в окнах и вхожу в ubuntu с помощью
vagrant
@ CodeCodeO-1-O-log-n, так какую сторону вы использовали viв окнах или на стороне Ubuntu? :)
n611x007 04
В Windows я запустил cmd.exe, а затем vagrant ssh на сервер ubuntu, а затем vi на сервер. Но позже я начал использовать Putty, и мне больше не нужно этого делать, и Putty отлично работает для меня.
codelogn
3
У меня была такая же проблема с клавишами со стрелками, но когда я использовал этот набор, то мой backspace не работал правильно
по какой-то причине, когда я установил vim
sudo apt-get install vim, у vi больше не было проблем со стрелками или backspace
Ответы:
Я предполагаю, что вы используете vim, поскольку он помечен как Linux. Пытаться:
(Вы можете настроить свой .vimrc с этим, добавив к нему эту команду. Создайте новый файл .vimrc, если он еще не присутствует в вашем домашнем каталоге, запустите,
echo $HOME
чтобы проверить путь к домашнему каталогу.)источник
vim
а неvi
. Большинство расширенных и полезных функцийvim
по умолчанию отключены, если вы не запустите его сvim
.set nocompatible
в отдельной строке в .vimrcUbuntu по умолчанию поставляется с ОС
vim-tiny
, в которой нет всех наворотов, которые есть у vim.Сделайте быстрый доступ
sudo apt-get install vim
ко всем интересным функциям, о которых все говорят.источник
:set term=builtin_ansi
исправил это для меня. Вы можете либо вставить его в vim, находясь в escape-режиме (режим звукового сигнала), либо добавить его в конец ~ / .vimrc без начального ":"
источник
:set term=builtin_ansi
работал на меня.:set term=xterm
не.export TERM=xterm
в командной строке перед вызовом vi, а затем:set term=xterm
в vim 7.2 работает для меняvi не поддерживает клавиши со стрелками в режиме вставки. Используйте vim. Хотя ваш vi может быть просто ссылкой на vim, он может быть настроен так, чтобы вести себя как "исходный" vi и, таким образом, отключать клавиши со стрелками. Просто вызовите vim напрямую.
источник
vi
иvim
. Но на моей коробкеvim
отпечаткиcommand not found
: D:set term=ansi
у меня сработало спасибо Raz . вы говорите, что он «не поддерживает». Мне интересно, вы сказали это, потому чтоvim-tiny
пакет ubuntu, который я использую, отличается от ванильного,vi
или в нем тоже будут работать настройки термина?Еще один вариант: эта проблема у меня появилась после некоторых изменений .vimrc. Согласованный поиск в конечном итоге показал, что моя умная перетрансляция ESC в нормальном режиме была не очень хорошей идеей. Удаление решило проблему:
источник
Единственное, что у меня сработало, это ": set term = ansi"
источник
vi
в окнах или на стороне Ubuntu? :)У меня была такая же проблема с клавишами со стрелками, но когда я использовал этот набор, то мой backspace не работал правильно
по какой-то причине, когда я установил vim
sudo apt-get install vim
, у vi больше не было проблем со стрелками или backspaceисточник
У меня просто возникла проблема с клавишами со стрелками после перехода на использование git в .vim.
Я установил это репо - https://github.com/sunaku/.vim
и, покопавшись в течение часа, я обнаружил, что плагин AutoClose (который все равно не понравился) сломал клавиши со стрелками.
В документации к плагину предлагается установить ttimeoutlen = 100, но у меня это не сработало! (используя urxvt + screen или urxvt и даже xterm)
Поэтому я удалил плагин в конце.
источник
Вы также можете попробовать 'noesckeys'
источник
У меня была такая же проблема при использовании vim внутри Windows 8.1 с Cygwin.
Решение сработало для меня, просто запустите следующую команду в своем терминале Cygwin:
источник
В командной строке напишите это:
источник