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


95

Мої клавіші зі стрілками не працюють in vi в режимі вставки вдома, вони просто вставляють новий рядок та велику літеру, наприклад, "A". Чи є спосіб це виправити?


3
Я маю на увазі розповсюдження Linux?
Мікель

Вони працюють далеко від дому? :-)
Брайан Егню

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

38
@ Пол Натан - Якщо рішення є emacs, то я не хочу знати, в чому проблема.
Час. Оуенс

Відповіді:


107

Я припускаю, що ви використовуєте vim, оскільки це позначено як Linux. Спробуйте:

:set nocompatible

(Можливо, ви захочете налаштувати свій .vimrc на це, додавши до нього цю команду. Створіть новий файл .vimrc, якщо він ще не присутній у вашому домашньому каталозі, запустіть, echo $HOMEщоб перевірити шлях до домашнього каталогу.)


7
Переконайтеся, що ви запускаєте vi за допомогою команди, vimа ні vi. Більшість розширених та корисних функцій vimвідключені за замовчуванням, якщо ви не запускаєте їх з vim.
бали

1
@pts - лише у непрацюючих системах. Запуск vim as vi на всіх моїх коробках працює чудово; однак, я використовував декілька ящиків CentOS, які демонструють поведінку, про яку ви говорите.
Час. Owens

Чи може хтось відредагувати цю відповідь, включивши, як це буде виглядати у vimrc?
Stephan

1
@Stephan Add set nocompatibleу своєму рядку у .vimrc
Matthew Wilcoxson

На 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). Я стикався з цією проблемою, коли хотів захистити оболонку, але зараз вона вирішена повністю :-)
JakeD,

35

:set term=builtin_ansi

виправив це для мене. Ви можете вставити це у vim, перебуваючи в режимі евакуації (режим звукового сигналу), або додати його до кінця ~ / .vimrc без провідного ":"


: set term = xterm також може працювати (і легше запам'ятовується).
Alexx Roche

FYI :set term=builtin_ansiпрацював у мене. :set term=xtermне.
FractalSpace

на одному з моїх ящиків Linux, який я використовую export TERM=xtermв командному рядку, перш ніж викликати vi, а потім :set term=xtermу vim 7.2 працює для мене
Alexx Roche

Працює ідеально! Дякую!
Ахмедзьянов Даніліан

Це працює, щоб увімкнути навігацію клавішами зі стрілками, але це повністю знищило все кольорове кодування в терміналі.
Кен Інграм

16

vi не підтримує клавіші зі стрілками в режимі вставки. Використовуйте vim. Хоча ваш vi може бути просто посиланням на vim, він може бути налаштований на поведінку як "оригінальний" vi і, таким чином, відключає клавіші зі стрілками. Просто зверніться безпосередньо до vim.


Хоча це не рішення, це найкраще пояснення поведінки (imo), чітко вказуючи різницю між viі vim. Але на моїй коробці vimдрукується command not found: D
Даніель В.

@DanFromGermany Можливо, у вас встановлено лише vi, а не vim. Будь ласка, спробуйте встановити vim через менеджер пакетів вашої системи Linux, якщо ви хочете ним скористатися.
lothar

:set term=ansiпрацював у мене завдяки роз . ви говорите, що це "не підтримує". Мені цікаво, ви сказали, що тому що vim-tinyпакет ubuntu - я використовую - відрізняється від ванілі, viчи термін налаштування буде працювати і в цьому?
n611x007,

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

У Windows я запустив cmd.exe, а потім скинув ssh на сервер ubuntu, а потім vi на сервер. Але пізніше я почав використовувати шпаклівку, і мені це більше не потрібно робити, і шпаклівка чудово працює для мене.
codelogn

2

У мене була та ж проблема з клавішами зі стрілками, але коли я використовував, що встановлював nocp або nocompatible, тоді мій backspace працював неправильно

з якихось причин, коли я встановив vim with sudo apt-get install vim, vi вже не мав жодних проблем зі стрілками або зворотним простором


1

У мене щойно виникла проблема з клавішами зі стрілками після перемикання на використання git у .vim.

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

і, покопавшись протягом години, я виявив, що плагін AutoClose (який і так не сподобався) зламав клавіші зі стрілками.

Документи плагіна пропонують встановити ttimeoutlen = 100, але це не спрацювало для мене! (за допомогою urxvt + екран або 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.