Vim Stuck в режимі вставки


52

Я вже декілька місяців використовую Vim через свій веб-хостинг (вони дозволяють доступ шпаклівки). Раптом escapeключ став не відповідати. Я не можу існувати вставити або будь-який інший режим, просто натиснувши на втечу. Мені належить вдарити, F1що викликає допомогу в vim і переводить мене в командний режим.

Я впевнений, що клавіша втечі на моїй клавіатурі справно працює, оскільки всі мої клавіші швидкого доступу до Windows, які використовують клавішу виходу, працюють нормально.

Я знаю, що це смішне питання, і я впевнений, що ще багато чого слід шукати щодо рішення. Те, що мені справді потрібно, - твердий підказки щодо того, з чого почати шукати.

Що може допомогти:

  1. Я використовую vim через шпаклівку
  2. Я входжу за допомогою jailshell
  3. Я не корінь

які налаштування терміналу? тобто для чого саме встановлена ​​змінна середовище TERM (у віддаленій оболонці)?
шарлатанний кіхот

$ TERM встановлено на "xterm"
Леві Хаквіт

Чи Ctrl-[працює? Що ви отримуєте, якщо натиснути, Ctrl-vто бігти? Це має бути показано як ^[.
Призупинено до подальшого повідомлення.

Ctrl- [працював. Рок на! Це рятує мене від багатьох розчарувань. Чи є якийсь шанс ви пояснити, чому це escбільше не працює? Також, будь ласка, опублікуйте ваш коментар як відповідь, щоб я міг його прийняти.
Леві Хаквіт

Моя перша думка, читаючи це: "О, він зламав свою кнопку" Відійди мене чорт звідси "
Даніель

Відповіді:


16

Спробуйте використовувати Ctrl-[замість Esc.

Який результат:

python -c "print ord(raw_input('char '))"

при натисканні Escі Enter? Це повинно бути "27". Який результат натискання Ctrl-Vтоді Esc?

Ви перевірили всі налаштування в PuTTY, щоб перевірити, чи є вони розумними?

Ви використовуєте Bash у віддаленій системі? Подивіться на вихід

bind -p | grep -i '\\e' | less

і подивіться, чи бачите ви щось незвичне. У вас є файл, який називається ~/.inputrc? Подивіться на його зміст, щоб побачити, чи є щось незвичне.

Подивіться на своє ~/.vimrcі подивіться, чи все гаразд теж.


Ctrl-c також повинен закінчитися вставним режимом ("[" десь трохи складно потрапити на деякі клавіатури)
akira

1
Я запустив сценарій python, і він повернувся як порожній рядок. Як це виправити? Я використовую шпаклівку.
Кіт

@Keith: Ви спробували будь-яку з інших діагностичних пропозицій?
Призупинено до подальшого повідомлення.

ctrl + [працював для мене з будь-якої причини, не маю уявлення, що я зробив, щоб застрягнути в vim.
Дерек Адаїр

147

Я помилково натиснув Ctrl+ sі застряг у режимі вставки. Щоб вийти з нього, використовуйте Ctrl+ q.


7
Це не вставний режим XOFF. Ви можете відключити керування потоком програмного забезпечення, виконавши stty -ixon(додайте його до свого ~/.bashrc). Тоді це натискання клавіш буде доступне, щоб прив'язати до чогось іншого. За замовчуванням у Bash він пов'язаний forward-search-history(протилежний Ctrl-r). Ctrl-q (Bash quoted-insert) також буде доступний.
Призупинено до подальшого повідомлення.

@DennisWilliamson Не .bash_profileбуло б кращим місцем? Не потрібно вимикати його в неінтерактивній оболонці, чи не так?
Пьотр Доброгост

1
@PiotrDobrogost: "Коли запускається інтерактивна оболонка, яка не є оболонкою для входу, Bash зчитує та виконує команди з ~ / .bashrc, якщо цей файл існує." .bash_profileвиконується лише тоді, коли Bash - оболонка для входу. "Так, як правило, ваш ~ / .bash_profile містить рядок if [ -f ~/.bashrc ]; then . ~/.bashrc; fi"
Призупинено до подальшого повідомлення.

@DennisWilliamson Ви праві. Що я хотів сказати, це те, що, мабуть, є сенс відключити управління потоком програмного забезпечення лише в інтерактивних оболонках. Якщо це правда, то згодом було б доцільно знайти спосіб сказати, чи оболонка інтерактивна, і вимкнути управління потоком програмного забезпечення лише в цьому випадку.
Пьотр Доброгост

@PiotrDobrogost: Дивіться мою відповідь на тему "Як я можу перевірити баш, якщо оболонка працює в інтерактивному режимі?"
Призупинено до подальшого повідомлення.

4

Можливо, ви використовуєте режим вставки .

'insertmode' 'im' 'noinsertmode' 'noim'
boolean (за замовчуванням вимкнено)
змушує Vim працювати таким чином, що режим Insert є режимом за замовчуванням. Корисно, якщо ви хочете використовувати Vim як редактор без моделей. Використовується для | evim |.
[...]
- Використовуйте CTRL-Oдля виконання однієї команди звичайного режиму | i_CTRL-O |). Коли це відображення, воно виконується так, ніби 'insertmode' було вимкнено. Нормальний режим залишається активним до завершення відображення. - Використовуйте CTRL-Lдля виконання декількох команд Нормальний режим, а потім використовуйте Escдля повернення до режиму Вставка. Зауважте, що CTRL-Lпереміщується курсор ліворуч, як це робиться, коли 'insertmode' не встановлено. | i_CTRL-L |

Я пропоную редагувати, ~/.vimrcщоб додати наступний рядок:

set noinsertmode         "disable insert mode

1
У моєму випадку він застряг у режимі вставки, тому що я випадково використовував `-y` в командному рядку Як сказано в посібнику: -y Start Vim у легкому режимі, як і виконуваний файл називався" evim "або" eview ". Змушує Vim вести себе як редактор клацання та введення. Щоб вийти з цього "режиму полегшення", просто використовуйте <kbd> CTRL </kbd> + <kbd> l </kbd> (малі літери), як сказав + SandRock
тон

0

У мене була ця проблема, але я зрозумів, що це було від випадкового зміни режиму вводу SCIM на "Інше - RAW CODE". Я змінив її назад на англійську / клавіатуру і більше не виникло проблем.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.