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

Устройство чтения электронных книг калибра из репозиториев Ubuntu по умолчанию поддерживает два типа устройств чтения электронных книг Kobo:

  • Kobo Vox и кобо HD
  • Kobo Aura и Читатели Kobo Touch

Для доступа ниже скрывают от Калибра, запускают мастер приветствия Калибра путем выбора...
щелчок вниз черная стрелка рядом с Предпочтения в–ѕ -> выбор Запущенный желанный мастер из выпадающего меню-> нажимают до второго экрана мастера приветствия Калибра.

enter image description here

188
задан 14.04.2020, 00:30

14 ответов

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

vi $HOME/.exrc 

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

17
ответ дан 14.04.2020, 00:31
  • 1
    Это должно быть принятым ответом.Спасибо! – Hadi 14.04.2020, 00:31
  • 2
    Источники Vim оба - видят вывод :version для порядка загрузки (также :h .exrc или :h init). Я предполагаю, что кто-то мог бы хотеть, чтобы установка применялась и в vi и в энергии, или мог быть чистой силой привычки. – Ahmed Elbatt 14.04.2020, 00:31
  • 3
    Я поместил это в .vimrc. Почему Вы помещаете его в .exrc? – sunnyuff 14.04.2020, 00:32

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

set nocompatible

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

1
ответ дан 14.04.2020, 00:31

Примечание:

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


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

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.

3
ответ дан 14.04.2020, 00:32

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

sudo apt-get install vim

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

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

vi desired-file
87
ответ дан 14.04.2020, 00:33
  • 1
    Это работало на меня. I' m удивил это, raspian идет с версией vi/vim, который это делает..., хотя все учебные руководства для него говорят Вам использовать нано, который it' s трудно, чтобы утверждать, что энергия действительно лучше, чем он. Вероятно, единственная причина, я использую энергию, а не нано, состоит в том, потому что энергия всегда находится на каждой машине, и на 50/50 шанс походит, является ли нано. – dkatzel 14.04.2020, 00:33
  • 2
    BLEEPIN' КОМПЬЮТЕР! – antak 14.04.2020, 00:33
  • 3
    Это должно быть принятым ответом (но кажется, что никто не принимает). it' s самый простой/самый чистый способ получить энергию полностью ' modernized' к компьютерной консоли (вместо tty/ANSI терминалов эры. – Robert Bain 14.04.2020, 00:34
  • 4
    работавший для меня - хотя не уверенный, почему это отличается от энергии, которую я запускал ранее – Christoffer Hammarström 14.04.2020, 00:34
  • 5
    да я согласовываю с Вами Lockzsmith, этот should' v принятый ответ – Zax 14.04.2020, 00:35

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

 export TERM=xterm
1
ответ дан 14.04.2020, 00:33
  • 1
    Это решило проблему для меня где другие ответы didn' t. Спасибо! – Salman 14.04.2020, 00:33

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

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

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

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

11
ответ дан 14.04.2020, 00:33
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
3
ответ дан 14.04.2020, 00:34
  • 1
    I' m не верный what' s настолько причудливый. Вы заканчиваете тем, что предложили 1. Vim установки - askubuntu.com/a/220072/158442 , 2. создать ~/.vimrc и установка nocompatible: askubuntu.com/a/353944/158442 , или 3. редактировать системный файл. Только предложение для редактирования /etc/vim/vimrc.tiny является новым, и все же Вы называете ответы причудливыми при предложении того же самого в качестве них. – jasenkoh 14.04.2020, 00:35

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

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

echo $HOME

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

export HOME=/root

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

0
ответ дан 14.04.2020, 00:35

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

  • на будет вставлено «A»,
  • на будет вставлено «B»,
  • ...

До вы отключите эту команду.
Чтобы деактивировать команду в vi: просто нажмите Esc
И тогда вы вернетесь к обычному использованию клавиш со стрелками:

[11159 ]
  • , чтобы идти вверх,
  • , чтобы идти вниз,
  • ...

    • К вашему сведению, вот несколько команд vi:
      Из этого источника .

      :x Return выход из vi , запись измененного файла в файл, указанный в исходном вызове
      :wq Return < / kbd> выйти из vi , записать измененный файл в файл, названный в оригинальном вызове
      :q Return выйти (или выйти) vi [11112 ]
      :q! Return выйти из vi , даже если последние изменения не были сохранены для этого вызова vi

      переместить курсор вниз на одну строку
      переместить курсор вверх на одну строку
      переместить курсор влево на один символ
      переместить курсор вправо на один символ

      u отменить все, что вы только что сделали; простой переключатель
      . повторить все, что вы только что сделали

      i вставку [11120 ] текст перед курсором, пока Esc не ударит
      I вставит текст в начало текущей строки, пока Esc не ударит [1163 ]
      a добавлять текст после курсора, пока Esc не нажмет
      A добавить текст к концу текущей строки До тех пор, пока Esc не нажмет
      o , откройте и поместите текст в новую строку ниже текущей строки, пока Esc не нажмет
      ] O открыть и поместить текст в новой строке над текущей строкой, пока Esc не нажмет

      r заменить одиночный символ под курсором ( Esc не требуется)
      cw заменить текущее слово новым текст, начиная с символа под курсором, пока Esc не нажмет
      x удалить одиночный символ под курсором
      Nx удалить N символов, начиная с символа под курсором
      dw удалить одно слово, начинающееся с символа под курсор
      C изменяет (заменяет) символы в текущей строке, пока Esc не нажмет
      D удалить остаток строки, начиная с текущей позиции курсора

      dd удалить всю текущую строку
      [1175 ] Ndd удалить N строк, начиная с текущей строки; например, 5dd удаляет 5 строк
      yy копировать (yank, cut) текущую строку в буфер
      Nyy копировать ( yank, вырезать) следующие N строк, включая текущую строку, в буфер
      p вставить строку (и) в буфере в текст после текущей строки [1179 ]

      0 (ноль) перемещать курсор к началу текущей строки (с курсором)
      [1128 ] переместить курсор в конец текущей строки
      w переместить курсор в начало следующего слова
      b переместить [ 11141] курсор назад к началу предыдущего слова
      :0 Return или 1G переместить курсор на первую строку в файле
      [ 1133] Return или nG переместить курсор на строку n
      :$ Return или G move курсор к последней строке в файле

      /string [11145 ] искать вперед для появления строки в тексте
      ?string искать назад для появления строки в тексте
      n двигаться [11147 ] к следующему вхождению строки поиска
      N переместить к следующему вхождению строки поиска в противоположном направлении

    27
    ответ дан 14.04.2020, 00:35

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

    1. используйте vim вместо vi
    2. используйте h, j, k и l для навигации (вы не можете перемещаться во время редактирования на традиционном vi между прочим).
    1
    ответ дан 14.04.2020, 00:35
    • 1
      ... и это было предназначено как комментарий к @luciano – Turque 14.04.2020, 00:36
    • 2
      Этот isn' t верный. Ищите terminfo/termcap, и libcurses основывал приложения. Я использую vi с 1990 в Xenix, Unix SCO, AIX, старом hpux, и у других, и чистый-vi с 80-х уже есть поддержка terminfo/termcap отображениям. – Paul Turner 14.04.2020, 00:36
    • 3
      @james-wong хорошо тогда я должен перефразировать свой ответ. К " чистый vi под Ubuntu doesn' t..." – Andrew Barber 14.04.2020, 00:37

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

    set nocompatible
    

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

    НТН

    0
    ответ дан 14.04.2020, 00:36

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

    1
    ответ дан 14.04.2020, 00:37

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

    vim ~/.vimrc
    

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

    set nocompatible
    

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

    233
    ответ дан 14.04.2020, 00:37
    • 1
      следующей проблемой является клавиша Backspace, решение: askubuntu.com/questions/296385/… – Rm558 14.04.2020, 00:38
    • 2
      Обработанный. Но почему эта фиксация требуется? Почему по умолчанию это не обрабатывает стрелки? – John 14.04.2020, 00:38
    • 3
      По умолчанию vi/vim программируется для замены клавиш со стрелками ключами h, j, k, l. Это сделано так, Вы не должны перемещаться от области мажорной тональности клавиатуры. – Brad Larson 14.04.2020, 00:38
    • 4
      Я должен был создать .exrc файл для vi, но установить работавший отлично nocompatible. – uwe 14.04.2020, 00:39
    • 5
      Существует прием, если Вы используете vi вместо vim, необходимо реализовать ту же конфигурацию, но в ~/.exrc файл. – Daniel 14.04.2020, 00:39

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

    Узнав, что

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

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

    sudo apt-get install console-data
    
    7
    ответ дан 14.04.2020, 00:38

    Теги

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