Нажатие клавиш со стрелками добавляет символы в редактор vi

Когда я пытался использовать клавиши со стрелками в режиме вставки в редакторе vi, в редакторе вставляются следующие символы:

  • для я получаю B,
  • для Я получаю A,
  • для Я получаю D,
  • для → < / kbd> Я получаю C.

Пожалуйста, помогите мне решить эту проблему.

265
задан 5 October 2013 в 11:54

14 ответов

Установите vim -> Это решит проблему.

sudo apt-get install vim

Есть много хороших уроков по vim / vi на youtube или в Интернете в целом. Для вашей проблемы см. Здесь

Затем продолжайте , как обычно, открывайте файлы :

vi desired-file
0
ответ дан 5 October 2013 в 11:54

Если у вас еще нет файла .vimrc в вашем домашнем каталоге, создайте его, используя это:

vim ~/.vimrc

Добавьте эту строку в начало файла:

set nocompatible

Сохраните файл, и это должно решить проблему для вас. :)

0
ответ дан 5 October 2013 в 11:54

С vi, при нажатии на меня Вы активируете команду для Вставки текста.
Эта команда позволяет Вам вставлять текст в свой файл.
И право, при нажатии:

  • на это вставит "A",
  • на это вставит "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 копия (рывок, сокращение) текущая строка в буфер
Nyy копия (рывок, сокращение) следующие строки N, включая текущую строку, в буфер
p вставьте строку (строки) в буфере в текст после текущей строки

0 (нулевой) курсор перемещения для запуска текущей строки (та с курсором)
$ переместите курсор в конец текущей строки
w переместите курсор в начало следующего слова
b положите обратно курсор к началу предыдущего слова
:0Возвратитесь или 1G переместите курсор в первую строку в файле
:nВозвратитесь или nG переместите курсор в строку n
:$Возвратитесь или G переместите курсор для длительности строки в файле

/string ищите вперед возникновение строки в тексте
?string ищите назад возникновение строки в тексте
n переместитесь в следующее возникновение строки поиска
N переместитесь в следующее возникновение строки поиска в противоположном направлении

27
ответ дан 5 October 2013 в 11:54

Чтобы отключить печать букв при нажатии стрелок в режиме редактирования, вы можете выполнить следующие действия:

vi $HOME/.exrc 

(создать файл, если он не существует), а затем добавить в него строку set nocompatible и сохранить.

0
ответ дан 5 October 2013 в 11:54

В редакторе vi есть три режима:

  • командный режим
  • режим ввода
  • режим по умолчанию.

Когда вы открываете файл, вы находитесь в режиме по умолчанию. Теперь, если вы хотите перейти к определенной позиции в вашем тексте, просто используйте клавиши со стрелками или используйте h , j , k , l ключи. Обратите внимание, что это будет работать, только если вы не нажали i (или любую другую команду ввода в режиме ввода, например a , A , I ).

Причина «B» может быть в том, что клавиши со стрелками в режиме ввода не функционируют как клавиши со стрелками, поэтому просто нажмите Esc , чтобы в любой момент перейти в режим по умолчанию. Когда для перехода в режим ввода нажмите i или a , а для навигации просто нажмите клавишу i и используйте клавиши со стрелками или h , j , k , l .

0
ответ дан 5 October 2013 в 11:54

У меня была точно такая же проблема, но не только на моей локальной машине, но и на соединениях через замазку на машине sles в виртуальной машине Win7 через приемник citrix. Как локальный, так и удаленный хосты показывают, что после переустановки Ubuntu возникла точно такая же проблема.

Узнав, что

$ localectl list-keymaps 
Couldn't find any console keymaps.

вызывает это странное поведение VI, я установил пакет console-data, который решает проблему!

sudo apt-get install console-data
0
ответ дан 5 October 2013 в 11:54
1112 Все объяснения немного странные. Я установил vi, но не установил vim.

Проверка альтернатив: /etc/alternatives/vi & rightarrow; /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
0
ответ дан 5 October 2013 в 11:54

Примечание:

В других постах есть хорошая информация, но ни в одном из постов не было попыток объяснить , почему такое поведение произошло. Многие люди будут сталкиваться с этим в будущем. Кроме того, не могли бы вы пометить этот вопрос как решенный, поскольку вам наверняка помогли какие-либо из предыдущих постов?


Вот объяснение :

Vi [ 1139] - редактор, который существует уже давно, его корни уходят в системы 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- mode . В отдельной строке введите следующее:

alias vi='vim'

Нажмите Esc, а затем введите :wq. Теперь вам нужно перезагрузить файл. Введите source .bashrc Любую другую оболочку, которая открывается после вас. Эти изменения автоматически загрузят файл .bashrc.

0
ответ дан 5 October 2013 в 11:54

Традиционный редактор vi не распознает клавиши со стрелками (... в воздухе). Есть два решения:

  1. используйте vim вместо vi
  2. используйте h, j, k и l для навигации (вы не можете перемещаться во время редактирования на традиционном vi между прочим).
0
ответ дан 5 October 2013 в 11:54

Это также может быть связано с переменной TERM; установите его, например, так:

 export TERM=xterm
0
ответ дан 5 October 2013 в 11:54

В некоторых системах опция 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-последовательность как последовательность литералов и т. Д.

Источник: https: //hea-www.harvard .edu / ~ тонкой / Технология / vi.html

0
ответ дан 5 October 2013 в 11:54

Для VI создайте или отредактируйте файл "~ / .exrc" или VIM создайте или отредактируйте файл "~ / .vimrc", установите или добавьте в строку.

set nocompatible

На момент написания этой статьи есть похвалы по второму пункту с наибольшим количеством голосов, которые задаются вопросом, почему их запись не была принята. Причина в том, что существуют хосты, которые не позволяют устанавливать другие редакторы. Даже тогда vim иногда имеет одинаковые эффекты, поэтому из двух первых записей есть куча полезной информации. Однако я не могу комментировать, надеюсь, это проясняет причины, почему ни один из них не является 100% правильным в 100% случаев.

0
ответ дан 5 October 2013 в 11:54

На этой машине мне пришлось make sure , чтобы

set nocompatible

было last entry in ~/.vimrc . Или, по крайней мере, одна из последних записей, в частности, больше не загружается плагин.

НТН

0
ответ дан 5 October 2013 в 11:54

По какой-то причине Ubuntu пропустил инициализацию envvar HOME для пользователя root на моем новом 18.04 VPS. Если это так, vi не может найти файл .vimrc. Проблема не возникает для обычных пользователей (в /home/).

Чтобы проверить переменную:

echo $HOME

Если это приводит к пустой строке, переменная не установлена. Проблема исчезла после того, как

export HOME=/root

я переместил команду в файл /root/.bashrc (я не знаю, где это обычно устанавливается).

0
ответ дан 5 October 2013 в 11:54

Другие вопросы по тегам:

Похожие вопросы: