Клавиши со стрелками в Linux vi не работают в режиме вставки


95

Мои клавиши со стрелками не работают в vi в режиме вставки дома, каждая из них просто вставляет новую строку и заглавную букву, например «A». Есть способ исправить это?


3
Я имею ввиду раздачу linux?
Микель,

Они работают вне дома? :-)
Брайан Агнью

4
Очевидно, решение - emacs. Очевидно.
Пол Натан,

38
@Paul Nathan - Если решение - emacs, то я не хочу знать, в чем проблема.
Час. Оуэнс

Ответы:


107

Я предполагаю, что вы используете vim, поскольку он помечен как Linux. Пытаться:

:set nocompatible

(Вы можете настроить свой .vimrc с этим, добавив к нему эту команду. Создайте новый файл .vimrc, если он еще не присутствует в вашем домашнем каталоге, запустите, echo $HOMEчтобы проверить путь к домашнему каталогу.)


7
Убедитесь, что вы запускаете 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ко всем интересным функциям, о которых все говорят.


1
Это было именно то, что мне нужно в 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

Я перепробовал все после того, как столкнулся с этой проблемой, и это было то, что я искал, спасибо!
Дэн Бартлетт

Спасибо за исправление, везде искал. Есть идеи, почему переназначение побега вызывает проблемы?
нефотография

6

Единственное, что у меня сработало, это ": set term = ansi"


1
Мне кажется, что это тоже сработало с использованием контейнера 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


1

У меня просто возникла проблема с клавишами со стрелками после перехода на использование git в .vim.

Я установил это репо - https://github.com/sunaku/.vim

и, покопавшись в течение часа, я обнаружил, что плагин AutoClose (который все равно не понравился) сломал клавиши со стрелками.

В документации к плагину предлагается установить ttimeoutlen = 100, но у меня это не сработало! (используя urxvt + screen или urxvt и даже xterm)

Поэтому я удалил плагин в конце.


0

Вы также можете попробовать 'noesckeys'


0

У меня была такая же проблема при использовании vim внутри Windows 8.1 с Cygwin.

Решение сработало для меня, просто запустите следующую команду в своем терминале Cygwin:

cp vimrc_example.vim ~/.vimrc

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.