Как переключаться между режимом команды и режимом вставки в Vim?


87

Я только начал использовать Vim в качестве IDE. Некоторое время я использовал его как тестовый редактор, поэтому мне не приходилось часто переходить в командный режим. Но, поскольку я программирую на Java, мне нужно перейти в командный режим, чтобы создать файл, скомпилировать / запустить его ... и т. Д.

Проблема в том, что мне нужен хороший способ переключения между двумя режимами.

Я поискал в Интернете, и там написано, что <Esc>ключ должен делать это, но у меня это не работает (может, это не для gVim? Я не знаю почему).

Мне приходится CTRLOкаждый раз нажимать, чтобы перейти в командный режим; клавиша выхода работает из этого режима ... она возвращает меня в режим вставки. Но есть ли лучший или более простой способ переключения между командным режимом и режимом вставки?


2
Esc определенно является правильной клавишей для завершения вставки. Вставку можно запустить разными способами. Строчная буква i, чтобы начать вставку под курсором, прописная буква I, чтобы начать вставку в начале строки, и т. Д.
Вон Кейто,

Начиная с пустого файла, следующие символы должны дать вам файл со словом «привет» в нем: ihello<ESC>:w hello.txt<ENTER>
Вон Кейто

8
ctrl-[работает как замена Esc на многих клавиатурах.
Vaughn Cato

Ответы:


52

Похоже, ваш Vim запущен в простом режиме . Смотрите :help easy.

Это происходит, когда Vim вызывается с -yаргументом или as evim, или, может быть, у вас есть :set insertmodeгде-то в вашей .vimrcконфигурации. Найдите источник и отключите его; временно это также можно сделать с помощью Ctrl+ O :set noim Enter.


Я думаю, что это все. В моем файле был включен режим вставки. После того, как я его удалил, клавиша выхода работает отлично. Благодарность!
Равиш Чавла

8
это легкий режим !?
Stachu

5
Простой режим Vim, теперь это оксюморон. Здесь можно выйти из vim?
Давос

1
@Davos - это режим, в котором он запускается в режиме вставки, так что по иронии судьбы это режим, в котором невозможно выйти из vim: p «нормальный режим» намного проще, просто alt + :, x XD
Fuseteam

115

Нажатие ESCприводит к выходу из режима вставки в нормальный режим, где вы можете нажать, :чтобы ввести команду. Нажмите еще iраз, чтобы вернуться в режим вставки, и все готово.

Я не гуру Vim, так что кто-нибудь может быть более опытным и предложить вам другие варианты.


3
Для большинства из нас принятый ответ содержал ответ на конкретную проблему.
Saul Axel Martinez Ortiz,

19

Об этом упоминалось в других вопросах , но ctrl + [это эквивалентно ESCна всех клавиатурах.


Я никогда не знал этого, полезно, когда клавиша
Escape

Вау, спасибо за информацию! Последовательность нажатия клавиш при копировании Tmux теперь имеет гораздо больше смысла.
Томас Легрис

4

С помощью jj

В моем случае _vimrcнастройка .vimrc (или в gVim находится внутри ) ниже.

inoremap jj <Esc>   """ jj key is <Esc> setting

Это обычное переназначение. Я обнаружил, что у него небольшая задержка, поскольку он ждет ввода дополнительных символов. В качестве альтернативы, переназначьте свой Capslock ключ на esc, используя что-то вроде KeyRemap4MacBook на Macbook: github.com/tekezo/KeyRemap4MacBook
Koobz


3

Исходя из Emacs , я обнаружил , что я , как ctrl +ключи , чтобы сделать вещи, и в Vim , я нашел , что оба , [ctrl + C]и [alt + backspace]перейдет в нормальный режим из режима вставки. Вы можете попробовать и посмотреть, работает ли что-нибудь из этого для вас.



0

Есть еще одно решение этой проблемы, которое, я думаю, довольно редко, и вы можете столкнуться с ним, если используете vim в OS X Sierra. На самом деле проблема с кнопкой Esc, а не с vim. Например, мне не удалось выйти из полноэкранного видео на YouTube с помощью Esc, но я жил с этим несколько месяцев, пока не столкнулся с той же проблемой с vim.

Я нашел это решение. Если вы достаточно ленивы, чтобы перейти по внешней ссылке, отключение Siri и завершение процесса в Activity Monitor помогли.


0

Вы можете использовать Alt + H, J, K, L для перемещения курсора в режиме вставки.


1
Нет, не можешь. Вероятно, это переназначение вашей конфигурации.
Saul Axel Martinez Ortiz

@SaulAxelMartinezOrtiz да, вы можете, хотя технически он выходит из нормального режима, после чего вы можете перемещаться в нормальном режиме: p
Fuseteam
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.