В режиме вставки в Vim, можно ли каким-либо образом перемещать текст, перемещая некоторые символы вперед и назад, кроме использования клавиш со стрелками?
Если я нажимаю h, j, kи в lто время как в режиме вставки, фактические символы печатаются на экране вместо перемещения по тексту.
То, как я сейчас это делаю, - это прибегаю к Ctrl+ [( Esc) и просматриваю текст; но очевидно, что это не продуктивно.
imap jk <Esc>
), чтобы вам не приходилось прерывать импульс и тянуться через клавиатуру, чтобы нажать клавишу.<ESC>
) отображаетсяkj
вместоjk
; мой друг друг Дейкстра виноват!jk
иkj
, поэтому я просто нажимаю ее, как большую кнопку двумя пальцами, и не имеет значения, в каком порядке я вернулась в нормальное состояние.Ответы:
Вы, кажется, неправильно используете vim, но это, вероятно, из-за того, что вы не очень хорошо с ним знакомы.
Правильный способ - нажать Esc, перейти туда, где вы хотите сделать небольшую коррекцию, исправить ее, вернуться и продолжить редактирование. Это эффективно, потому что у Vim гораздо больше движений, чем у обычного персонажа вперед / назад / вверх / вниз. После того, как вы узнаете больше о них, это окажется более продуктивным.
Вот пара вариантов использования:
Но, если вы все еще хотите сделать небольшие текстовые обходы , не выходя из режима вставки, выполните rson «s совет и использовать Ctrl+ O. Взяв первый пример, который я упомянул выше, Ctrl+ OFfпереместит вас к предыдущему символу "f" и оставит вас в режиме вставки.
источник
Ctrl+o
для выдачи одной команды в обычном режиме. Это может иногда привести вас туда, где вы хотите быть, особенно в сочетании с командами перемещения t / T и f / F.:h ins-special-keys
.ctrl-h
: Backspace,:ctrl-w
удалить словоctrl-u
,: удалить в начало строкиalt-b
,: вернуться назад слово.Находясь в режиме вставки , используйте CtrlOдля перехода в обычный режим только одну команду:
это, вероятно, самый простой способ сделать то, что вы хотите, и его легко запомнить.
Другие очень полезные управляющие клавиши в режиме вставки:
это устранит много расточительных переключений обратно в нормальный режим.
источник
Режим вставки
движение
hjkl
Несмотря на то, что сказал Павел Швед - что, вероятно, более целесообразно привыкнуть к Escподключению режима вставки - вот примерный набор сопоставлений для быстрой навигации в режиме вставки:
Это заставит Alt+ hв режиме вставки перейти на один символ влево, Alt+ jвниз и так далее, аналогично hjklобычному режиму.
Вы должны скопировать этот код в ваш файл vimrc, чтобы он загружался каждый раз, когда вы запускаете vim (вы можете открыть его, набрав
:new $myvimrc
запуск в обычном режиме).Любые движения в нормальном режиме
Поскольку Altклавиша-модификатор по умолчанию не связана (с чем-то важным), вы можете таким же образом перевести другие (или все) функции из обычного режима в режим вставки. Например:
переход к началу текущего слова с помощью Alt+ b:
(Другое использование Altв режиме вставки)
Стоит отметить, что использование Altключа может быть лучше, чем репликация поведения в обычном режиме: например, здесь приведены сопоставления для копирования из соседней строки части из текущего столбца до конца строки:
(Я использовал
\
продолжение строки и отступ для повышения ясности - команды интерпретируются так, как если бы они были написаны в одной строке.)Встроенные горячие клавиши для редактирования
(Нет заметных встроенных горячих клавиш для движения в режиме вставки.)
Ссылка:
:help insert-index
Режим командной строки
Этот набор отображений делает верхние Alt+ hjkl движения доступными в командной строке:
Кроме того, эти сопоставления добавляют движения как в режим вставки, так и в режим командной строки за один раз:
Команды отображения для перевода команд обычного режима в режим командной строки выглядят немного иначе, чем команды отображения режима вставки (поскольку в режиме командной строки отсутствует режим вставки Ctrl+ O):
Встроенные горячие клавиши для перемещения и редактирования
Ссылка:
:help ex-edit-index
источник
Alt
ключ?Если вы пурист Vim, пропустите чтение этого ответа. OTOH, если вы новичок в vim и ищете несколько полезных советов, которые вы не найдете во многих сотнях уроков и блогов vim, читайте дальше ... :-)
Несколько неортодоксальных (vim) способов
Это 2014 год, и как человек, недавно вернувшийся в прошлое,
vim
я могу предложить несколько потенциально противоположных точек зрения и советов.Используйте shift + left или shift + right для перемещения по словам
Хотя повторение является мощным понятием в vim, я (лично) нахожу странным, что его использование заставляет меня считать (строки, символы, слова и т. Д.) Или делать предположения. Мой мозг обычно работает как «Я хочу курсор там », а не как «Я хочу курсор _5_words_to_the_left_». Быстрая возможность перемещать курсор и визуально наблюдать, где точка вставки таким образом, позволяет мне сосредоточиться на том, что я редактирую, вместо того, чтобы подсчитывать, сколько прыжков мне нужно сделать, чтобы добраться туда, где мне нужно редактировать.
Включите режим мыши, и используйте колесо мыши и нажав
... перемещаться по большим текстам.
Большинство (всех) современных компьютеров имеют сенсорную панель, которая тесно интегрирована с клавиатурой (например, MacBook). Промышленные дизайнеры потратили много человеко-лет на оптимизацию этих конструкций, так что старая проблема необходимости отодвигать руку от клавиатуры больше не является реальной проблемой. Ладно, это если вы привыкли к мышке и не любите переключаться, но для любого новичка в vim (например, для тех, кто может найти этот пост через поиск), это не должно быть большой проблемой.
В качестве бонуса клик + перетаскивание переводит вас в визуальный режим
При включенной мыши нажатие и перетаскивание приводит к переключению в визуальный режим и выделению области для дергания.
И используйте колесо прокрутки
Использование мыши (колесика) для прокрутки и щелчка для позиционирования курсора (дух) просто работает. См. Http://usevim.com/2012/05/16/mouse/, чтобы узнать больше об этом.
Так что...
Это то, что я бы назвал более современными (с помощью мыши, колесом прокрутки и т. Д.) Способами навигации в vim, одинаково эффективными в зависимости от ваших предпочтений ввода.
НТН
источник
Многие люди в сообществе Vim утверждают, что вы не должны перемещаться в режиме вставки, что это не так. Я думаю, что это неправильное чувство, изученное при переходе от стандартных редакторов к Vim.
Vim наиболее эффективен, когда вы используете его инструменты для создания атомарных, повторяемых действий или находок.
Навигация в режиме вставки возможна, если вы исправляете ошибку, сделанную в том же сеансе вставки. Вы не должны перемещаться за пределы диапазона текста, который вы изменили.
Если вы допустили ошибку при вводе текста и вышли из режима вставки, чтобы исправить это, вы не сможете повторить намеченное действие,
.
повторите исправление.Vim поддерживает множество клавиш навигации в режиме вставки. Очевидно, есть клавиши со стрелками, Home и End, но есть и много других сочетаний клавиш. См
:h ins-special-keys
.источник
В GVim вы можете использовать мышь. Но, честно говоря, что не так с использованием клавиш со стрелками? Есть причина, почему они на клавиатуре.
источник
Чтобы иметь немного лучшую навигацию в режиме вставки, почему бы не сопоставить некоторые клавиши?
Если вы можете обойти работу мета-ключа в своем терминале, вы можете еще лучше смоделировать режим emacs. Навигация в обычном режиме намного лучше, но для более коротких движений помогает оставаться в режиме вставки.
Для более длинных прыжков я предпочитаю следующий перевод по умолчанию:
Это переходит в нормальный режим и возвращает слово
источник
Я считаю, Homeи End(и PageUp/ PageDn) также нормально работают в режиме вставки, но, кроме этого, я не верю, что существуют какие-либо другие стандартные ключи, определенные для обхода текста.
источник
Извините, но Вим так не работает.
Вы должны переключиться в «нормальный» режим, перейти и затем вернуться, чтобы вставить снова.
источник
Вы можете создавать сопоставления, которые работают в режиме вставки. Способ сделать это через inoremap. Обратите внимание на 'i' в начале команды (noremap полезно, чтобы избежать коллизий карты ключей). Следствием является «n» для «нормального» режима. Вы можете догадаться, что vim считает «нормальным»;)
ОДНАКО, вы действительно хотите перемещаться по тексту, используя «нормальный» режим. Vim превосходен в таких вещах, и вся эта сила доступна в обычном режиме. Vim уже предоставляет простые способы перехода из обычного режима в режим вставки (например, i, I, a, A, o, O). Хитрость заключается в том, чтобы облегчить переход в обычный режим. Способ сделать это состоит в том, чтобы переназначить escape на более удобный ключ. Но вам нужен тот, который не будет противоречить вашей обычной печати. Я использую:
Поскольку jj (это 2 j набираются один за другим быстро), кажется, не появляется в моем словаре. Другие будут переназначаться туда, где это удобно.
Другое существенное изменение, которое я делаю, - это переключение клавиш CAPSLOCK и CONTROL на моей клавиатуре (используя конфигурацию клавиатуры главного компьютера), поскольку я почти никогда не использую CAPSLOCK, и у него есть эта большая, красивая кнопка там, где я хочу. (Это характерно для пользователей Emacs. Недостатком является то, что вы оказались на «нефиксированной» клавиатуре! Аааааа!)
После переназначения CAPSLOCK вы можете удобно использовать следующие переназначения режима вставки:
Помня, что некоторые ключи уже сопоставлены в режиме вставки (по умолчанию back-kill-word - Cw (Control-w), у вас уже могут быть нужные привязки. При этом я предпочитаю Ch, так что в моем .vimrc у меня есть :
НО, вы, вероятно, хотите такой же спазм мышечной памяти в нормальном режиме, поэтому я также сопоставляю Ch как:
(d) elete (b) ackwards выполняет одно и то же с одним и тем же клавишным аккордом. Этот вид быстрого редактирования - тот, который я считаю полезным на практике для опечаток. Но придерживайтесь обычного режима для перемещения по тексту и для чего-то большего, чем убийство предыдущего слова. Как только вы привыкнете менять режимы (используя, конечно, переназначение), это будет намного эффективнее, чем переназначение режима вставки.
источник
Вы могли бы использовать
imap
для привязки любой клавиши в режиме вставки к одной из клавиш курсора. Вот так:Теперь h работает как в обычном режиме, перемещая курсор. (Отображение h таким способом, очевидно, является плохим выбором)
Сказав, что я не думаю, что стандартный способ перемещения по тексту с использованием VIM "не продуктивен". Есть много очень мощных способов обхода текста в обычном режиме (например, используя w и b, или / и?, Или f и F и т. Д.)
источник
Для некоторых часто используемых движений и действий я определил следующие отображения. Это экономит нажатие клавиш по сравнению с комбинацией CTRL + O, и, поскольку они мне часто нужны, они окупаются в долгосрочной перспективе.
источник