Коли я намагався використовувати клавіші зі стрілками в режимі вставки в vi
редакторі, в редактор вставляються наступні символи:
- бо ↓я отримую B,
- бо ↑я отримую A,
- бо ←я отримую D,
- бо →я отримую С.
Будь ласка, допоможіть мені вирішити цю проблему.
Коли я намагався використовувати клавіші зі стрілками в режимі вставки в vi
редакторі, в редактор вставляються наступні символи:
Будь ласка, допоможіть мені вирішити цю проблему.
Відповіді:
Якщо у вас ще немає .vimrc
файлу у вашому домашньому каталозі, створіть його за допомогою цього:
vim ~/.vimrc
Додайте цей рядок у верхню частину файлу:
set nocompatible
Збережіть файл, і це має вирішити проблему. :)
vi
замість цього vim
, ви повинні зробити ту саму конфігурацію, але у ~/.exrc
файлі.
Встановити vim -> Це виправить проблему.
sudo apt-get install vim
На ютубі чи в Інтернеті є багато хороших навчальних посібників з vim / vi. Про вашу проблему дивіться тут
Потім продовжуйте відкривати файли, як зазвичай :
vi desired-file
При vi
натисканні на кнопку iви активуєте команду Вставити текст.
Ця команда дозволяє вставити текст у файл.
І правильно, натискаючи:
До деактивації цієї команди.
Щоб вимкнути команду в vi
: просто натисніть на Esc
І тоді ви отримаєте нормальне використання своїх клавіш зі стрілками:
FYI, ось кілька vi
команд:
З цього джерела .
:x
Return вийти з vi , виписати модифікований файл у файл, названий в оригінальному виклику,
:wq
Return вийти vi , записати модифікований файл у файл, названий в оригінальному виклику,
:q
Return вийти (або вийти) vi
:q!
Return вийти 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
Returnабо 1G
переміщення курсору до першого рядка у файлі
:n
Returnабо nG
переміщення курсору до рядка n
:$
Returnабо G
переміщення курсору до останнього рядка у файлі
/string
пошук вперед для появи рядка в тексті
?string
пошуку назад для появи рядка в тексті
n
переміщення до наступного появи рядка пошуку
N
переміщення до наступного появи рядка пошуку в зворотному напрямку
:help compatible
: "За замовчуванням ця опція увімкнена, а параметри Vi використовуються для Параметри. Цей за замовчуванням було обрано для тих, хто хоче використовувати Vim так само, як і Vi, і навіть не хочуть (хотіли) знати про "сумісний" варіант ".
Для відключення друку букв на натисканні стрілок у режимі редагування ви можете виконати наступне
vi $HOME/.exrc
(створіть файл, якщо його не існує), а потім додайте set nocompatible
до нього рядок і збережіть.
:version
для порядку завантаження (також :h .exrc
або :h init
). Я припускаю, що хтось може захотіти, щоб налаштування застосовувалося як vi, так і vim, або це може бути силою звички.
У редакторі vi є три режими, а саме:
Коли ви відкриєте файл, ви перебуваєте в режимі за замовчуванням. Тепер , якщо ви хочете , щоб перейти до певної позиції в тексті, просто використовуйте клавіші зі стрілками або використання h, j, k, lключі. Зверніть увагу , що це буде працювати тільки тоді , коли ви не натиснули i(або будь-який інший режим введення введення команди , як a, A, I).
Причиною "B" може бути те, що клавіші зі стрілками в режимі введення не функціонують як клавіші зі стрілками, тому просто натисніть, Escщоб будь-коли перейти в режим за замовчуванням. Коли для переходу в режим введення натисніть iабо a, а також для навігації просто натисніть iклавіші ключ і використовуйте стрілки або h, j, k, l.
У мене була та сама проблема, але не тільки на моїй локальній машині, але і підключеннях через шпаклівку на слюсовій машині в Win7 VM через ресивер citrix. Як місцевий хост, так і віддалений хости показують після перевстановлення Ubuntu, була точно така ж проблема.
Після того як це з’ясували
$ localectl list-keymaps
Couldn't find any console keymaps.
Викликає таку дивну поведінку VI, я встановив дані консолі пакета, що вирішує проблему!
sudo apt-get install console-data
Примітка:
В інших публікаціях є гарна інформація, але жоден з публікацій не намагався пояснити, чому така поведінка сталася. Багато людей неодмінно натрапляють на це в майбутньому. Також ви могли б позначити це питання як вирішене, оскільки будь-який з попередніх дописів, ймовірно, допомагав вам?
Ось пояснення :
Vi - це редактор, який тривав довгий час, з коренями назад до систем Unix. Це хороший інструмент, але він був перероблений і тепер є кращим. Вім був написаний пізніше і це та ітерація. Люди зазвичай називають vi як «vim-minimal», а vim - «покращена» версія vi. Ви можете подумати про це так: vi - ядро, а vim розширюється на ньому.
Ймовірно, як ви виявили свою поведінку :
Для того, щоб ви виявили цю проблему, ви натиснули " i ", щоб увійти в режим вставки, а потім використали клавіші зі стрілками для навігації по правильному рядку та редагуванню точки. Саме це спричинило вашу несподівану проблему із чарами.
Рішення 1 або 2
1) vi someFile
Під час використання vi спочатку перейдіть до точки редагування, а потім перейдіть у режим вставки.
2) vim someFile
Просто використовуйте vim з самого початку.
Я не можу наголосити, щоб прочитати посібник (довідкові сторінки) або використовувати -h для допомоги. Після того, як ви пристосуєтесь до шаблонів оболонки, сторінки чоловіка стають вашим найкращим другом. Приклад: 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 не встановлюється. Скористайтеся наведеними нижче прикладами, щоб оновити свої сховища та встановити vim.
sudo apt-get update
sudo apt-get install vim
За винятком випадків, коли ви використовуєте vi або vim лише під час пошуку в Інтернеті, як щось виправити, і ви забули набрати текст vim
, є один із способів виправити це на майбутнє. Я застерігаю вас звернути увагу. Ви можете використовувати псевдонім, щоб перезаписати vi з посиланням на vim, так що незалежно від того, що ви введете в нечастому майбутньому, ви отримаєте vim без цього "ой!" мить. Ви завжди можете видалити псевдонім пізніше.
Тип vim .bashrc
. Перемістіться вниз до порожнього рядка лише ~
(або до будь-якого іншого рядка, який починається з alias
(таким чином вони згруповані разом), а потім натисніть клавішу i, щоб увійти в режим -встановлення. У своєму окремому рядку введіть наступне:
alias vi='vim'
Натисніть, Esc
а потім введіть :wq
. Тепер потрібно перезавантажити файл. Введіть source .bashrc
будь-яку іншу оболонку, яка відкриється після внесення цих змін, автоматично завантажить файл .bashrc.
Всі наведені пояснення трохи химерні. У мене встановлено 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
~/.vimrc
та встановити nocompatible
: askubuntu.com/a/353944/158442 , або 3. редагувати системний файл. Лише пропозиція редагувати /etc/vim/vimrc.tiny
нове, і все ж ви називаєте відповіді химерними, пропонуючи те саме, що і вони.
Традиційний редактор vi не розпізнає клавіші зі стрілками (... afair). Є два рішення:
Це також може бути пов'язано зі TERM
змінною; встановіть його наприклад так:
export TERM=xterm
У деяких системах 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 зчитування послідовності відходу як послідовності буквального <ESC> <O> <A> тощо.
Для VI створіть або відредагуйте файл "~ / .exrc" або VIM, створіть або відредагуйте файл "~ / .vimrc", встановіть або додайте у рядку.
set nocompatible
На момент написання цього повідомлення є похвальні відгуки щодо другого найбільш голосового пункту, які цікавляться, чому їхній запис не був прийнятий Причиною є те, що є хости, які не дозволяють встановлювати інші редактори. Навіть тоді vim іноді має однакові ефекти, тому з двох кращих записів є купа корисної інформації. Я не можу коментувати, проте, сподіваюсь, це очищає причини, чому жоден з них не відповідає 100% часу.
Чомусь Ubuntu опустив ініціалізацію envvar HOME для користувача root на моїй новій 18.04 VPS. Якщо це так, vi не може знайти файл .vimrc. Проблема не виникає для звичайних користувачів (в / вдома /).
Щоб перевірити змінну:
echo $HOME
Якщо це призведе до порожнього рядка, змінна не встановлюється. Проблема пішла після
export HOME=/root
Я перемістив команду у файл /root/.bashrc (я не знаю, де це правило встановлено).