Нажатие клавиш со стрелками добавляет символы в редактор vi
Когда я пытался использовать клавиши со стрелками в режиме вставки в vi редактор следующие символы вставляются в редактор:
- для ↓ я получаю B,
- для get я получаю,
- для ← я получаю D,
- для → я получаю C.
Пожалуйста, помогите мне в решении этой проблемы.
16 ответов
Если у вас еще нет .vimrc файл в вашем домашнем каталоге, создайте его с помощью этого:
vim ~/.vimrc
Добавьте эту строку в начало файла:
set nocompatible
Сохраните файл, и это должно решить проблему для вас.:)
Установите vim -> Это решит проблему.
sudo apt-get install vim
На youtube или в Интернете есть много хороших уроков по vim / vi. По вашей проблеме смотрите здесь
Затем продолжайте открывать файлы как обычно:
vi desired-file
С vi, при нажатии на я активирую команду Вставить текст.
Эта команда позволяет вам вставить текст в ваш файл.
И правильно, при нажатии:
- на ↑ он вставит "А",
- на ↓ он вставит "B",
- ...
Пока вы не отключите эту команду.
Деактивировать команду в vi: просто нажмите на Esc
И тогда вы вернетесь к нормальному использованию клавиш со стрелками:
- ↑ идти вверх,
- ↓, чтобы пойти вниз,
- ...
К вашему сведению, вот некоторые vi команды:
Из этого источника.
:x Вернуть выход vi, записав измененный файл в файл, указанный в исходном вызове
:wq Вернуть выход vi, записав измененный файл в файл, указанный в исходном вызове
:q Вернуть выход (или выйти) vi
:q! Вернуть выход vi, даже если последние изменения не были сохранены для этого вызова vi
↓ переместить курсор вниз на одну строку
↓ переместить курсор вверх на одну строку
← переместить курсор влево на один символ
→ переместить курсор вправо на один символ
u отменить все, что вы только что сделали; простой тумблер
. переделывать все, что вы только что сделали
i вставлять текст перед курсором, пока не нажмете клавишу Esc
I вставлять текст в начале текущей строки, пока не нажмете клавишу Esc
a добавлять текст после курсора, пока не нажмете Esc
A добавлять текст в конец текущей строки, пока не нажмете Esc o открыть и поместить текст в новую строку ниже текущей строки, пока не нажмете Esc O открыть и поместить текст в новой строке над текущей строкой, пока не нажмете клавишу Esc
r заменить один символ под курсором (не требуется Esc)
cw заменить текущее слово новым текстом, начиная с символа под курсором, до нажатия клавиши Esc
x удалить один символ под курсором
Nx удалить N символов, начиная с символа под курсором
dw удалить отдельное слово, начинающееся с символа под курсором
C меняйте (заменяйте) символы в текущей строке, пока не нажмете клавишу Esc
D удалить остаток строки, начиная с текущей позиции курсора
dd удалить всю текущую строку
Ndd удалить N строк, начиная с текущей строки; например, 5dd удаляет 5 строк
yy скопировать (yank, cut) текущую строку в буфер
Nyy скопировать (yank, cut) следующие N строк, включая текущую строку, в буфер
p вставьте строку (и) в буфере в текст после текущей строки
0 (ноль) переместить курсор в начало текущей строки (ту, с курсором)
$ переместить курсор в конец текущей строки
w переместить курсор в начало следующего слова
b переместить курсор назад к началу предыдущего слова
:0 Возврат или 1G переместить курсор на первую строку в файле
:n Возврат или nG переместить курсор на строку n
:$ Возврат или G переместить курсор на последнюю строку в файле
/string поиск вперед для появления строки в тексте
?string поиск в обратном направлении для появления строки в тексте
n перейти к следующему появлению строки поиска
N перейти к следующему появлению строки поиска в противоположном направлении
Чтобы отключить печать букв при нажатии стрелок в режиме редактирования, вы можете сделать следующее
vi $HOME/.exrc
(создать файл, если он не существует), а затем добавить строку set nocompatible к этому и сохраните.
В редакторе vi есть три режима:
- командный режим
- режим ввода
- режим по умолчанию.
Когда вы открываете файл, вы находитесь в режиме по умолчанию. Теперь, если вы хотите перейти к определенной позиции в вашем тексте, просто используйте клавиши со стрелками или клавиши h, j, k, l. Обратите внимание, что это будет работать только тогда, когда вы не нажали i (или любую другую команду ввода режима ввода, например, A, I).
Причина "B" может заключаться в том, что клавиши со стрелками в режиме ввода не функционируют как клавиши со стрелками, поэтому просто нажмите клавишу Esc, чтобы в любой момент перейти в режим по умолчанию. Когда для перехода в режим ввода нажмите i или a, а для навигации просто нажмите кнопку i и используйте клавиши со стрелками или h, j, k, l.
У меня была точно такая же проблема, но не только на моей локальной машине, но и на соединениях через замазку на машине sles в виртуальной машине Win7 через приемник citrix. Как локальный, так и удаленный хосты показывают, что после переустановки Ubuntu возникла точно такая же проблема.
Узнав, что
$ localectl list-keymaps
Couldn't find any console keymaps.
Вызывает странное поведение VI. Я установил пакет console-data, который решает проблему!
sudo apt-get install console-data
Примечание:
В других сообщениях есть хорошая информация, но ни один из них не пытался объяснить, почему это произошло. Многие люди будут сталкиваться с этим в будущем. Кроме того, не могли бы вы пометить этот вопрос как решенный, так как любой из предыдущих постов, вероятно, помог вам?
Вот объяснение:
Vi - редактор, который существует уже давно, его корни уходят в системы Unix. Это хороший инструмент, но он был повторен, и теперь он стал лучше. Vim был написан позже и это итерация. Люди обычно называют vi "vim-minimal", а vim - "улучшенная" версия vi. Вы можете думать об этом так: vi - это ядро, а vim расширяет его.
Вероятно, как вы обнаружили поведение:
Чтобы вы обнаружили эту проблему, вы нажали "i", чтобы войти в режим вставки, а затем с помощью клавиш со стрелками переместились по правильной линии и отредактировали точку. Это то, что вызвало неожиданную проблему с символами.
Решение 1 или 2
1) vi someFile При использовании vi сначала перейдите к точке редактирования, затем войдите в режим вставки.
2) vim someFile Просто используйте vim с самого начала.
Я не могу выделить достаточно, чтобы прочитать руководство (справочные страницы) или использовать -h для помощи. Как только вы подстроитесь под шаблоны в оболочке, man-страницы станут вашим лучшим другом. Пример: man vi или же man vim
Убедитесь, что Vim установлен.
Откройте окно консоли и выполните:
dpkg --list | grep vim
Если вы получили что-то похожее на это, тогда вы можете просто начать использовать vim.
~ $ dpkg --list | grep vim
ii vim 2:7.4.052-1ubuntu3 amd64 Vi IMproved - enhanced vi editor
ii vim-common 2:7.4.052-1ubuntu3 amd64 Vi IMproved - Common files
ii vim-runtime 2:7.4.052-1ubuntu3 all Vi IMproved - Runtime files
ii vim-tiny 2:7.4.052-1ubuntu3 amd64 Vi IMproved - enhanced vi editor - compact version
Если командная строка возвращает ничего, vim is не установлен. Используйте приведенные ниже примеры для обновления ваших репозиториев, а затем установите vim.
sudo apt-get update
sudo apt-get install vim
На случай, если вы используете vi или vim только при поиске в интернете, как что-то исправить, и вы случайно забыли набрать vimЕсть один способ, которым вы можете это исправить на будущее. Я предупреждаю вас обратить внимание. Вы можете использовать псевдоним, чтобы перезаписать vi ссылкой на vim, чтобы независимо от того, что вы печатаете в нечастом будущем, вы получаете vim без этого "упс!" момент. Вы всегда можете удалить псевдоним позже.
Тип vim .bashrc, Переместиться вниз к пустой строке только с ~ (или любой другой строке, начинающейся с alias (поэтому они сгруппированы вместе), а затем нажмите клавишу i, чтобы войти в режим -insert-. В отдельной строке введите следующее:
alias vi='vim'
Нажмите Esc а затем введите :wq, Теперь вам нужно перезагрузить файл. Тип source .bashrc Любая другая оболочка, которая открывается после внесения этих изменений, автоматически загружает файл.bashrc.
Это также может быть связано с TERM переменная; установите это, например, так:
export TERM=xterm
Все объяснения немного странные. Я установил vi, но не установил vim.
Проверка альтернатив: /etc/alternatives/vi → /usr/bin/vim.tiny
Так vi является vim.tinyи использует /etc/vim/vimrc.tiny,
И в vimrc.tiny Вы найдете следующую строку:
set compatible
Который является почти единственным в этом файле. Обратите внимание, что в /etc/vim/vimrc это использует nocompatible,
Так что либо установите vim, либо измените vimrc.tiny файл или создать свой собственный ~/.vimrc который должен содержать строку:
set nocompatible
В некоторых системах nocompatible опция недоступна или может не решить проблему, если плагин нарушает функциональность клавиши со стрелкой. Вот обходной путь...
Изменить .exrc файл, чтобы включить следующие строки:
map! ^[OA ^[ka
map! ^[OB ^[ja
map! ^[OC ^[la
map! ^[OD ^[ha
Или, если проблема существует только в обычном режиме, вы можете изменить на nmap и пропустить следующее a, следующее:
nmap! ^[OA ^[k
и так далее.
Вот комбинации клавиш, необходимые для их создания (показаны только первые):
map! <CTRL-V><Up-Arrow> <CTRL-V><ESC>ka
Это выходит из режима редактирования, перемещается в нужном направлении и возвращается в режим редактирования. Это необходимо для преодоления Vi, читающего escape-последовательность как последовательность литералов
Для ВП создайте или отредактируйте файл "~/.exrc" или VIM создайте или отредактируйте файл "~/.vimrc", установите или добавьте в строку.
set nocompatible
На момент написания этой статьи есть похвалы по второму пункту с наибольшим количеством голосов, которые задаются вопросом, почему их запись не была принята. Причина в том, что существуют хосты, которые не позволяют устанавливать другие редакторы. Даже тогда vim иногда имеет одинаковые эффекты, поэтому из двух первых записей есть куча полезной информации. Однако я не могу комментировать, надеюсь, это проясняет причины, почему ни один из них не является 100% правильным в 100% случаев.
Традиционный редактор vi не распознает клавиши со стрелками (... в воздухе). Есть два решения:
- используйте vim вместо vi
- используйте h, j, k и l для навигации (вы не можете перемещаться во время редактирования на традиционном vi-btw.)
я бы порекомендовал попробовать
gvim.
sudo apt install vim-gtk3
Gvim добавляет графический пользовательский интерфейс поверх vim, а также по умолчанию предоставляет правильный курсор.
Это может произойти из-за того, что Vim не получил (или дал неправильную) информацию об используемом вами терминале и, следовательно, не может правильно распознавать нажатия клавиш.
Поскольку Vim пытается получить эту информацию из
TERMпеременная, это можно исправить, запустив
export TERM=linux
перед запуском Vim.
Это похоже на ответ Джаспера Нуйенса о настройке его на . ,
xterm-color, а также
xterm-256colorотносятся к графическим терминальным программам. linuxэто тип терминала, установленный в виртуальных консолях , и его стоит попробовать, если вы не используете графический терминал или если
xtermбыл уже установлен или иным образом не эффективен.
На этой машине мне пришлось make sure тот
set nocompatible
это last entry in ~/.vimrc, Или, по крайней мере, одна из последних записей, в частности, больше не загружается плагин.
НТН
По какой-то причине Ubuntu пропустил инициализацию envvar HOME для пользователя root на моем новом 18.04 VPS. Если это так, vi не может найти файл.vimrc. Проблема не возникает для обычных пользователей (в /home/).
Чтобы проверить переменную:
echo $HOME
Если это приводит к пустой строке, переменная не установлена. Проблема ушла после
export HOME=/root
Я переместил команду в файл /root/.bashrc (я не знаю, где это обычно устанавливается).