vim
Вставка текста
Поиск…
Выход из режима вставки
команда | Описание |
---|---|
<Esc> | Вставляет режим вставки, запускает автокоманды и аббревиатуры |
<C-[> | Точный синоним <Esc> |
<Cc> | Режим вставки вставки, не вызывает автокоманды |
Некоторым людям нравится использовать относительно необычную пару символов, таких как jk
как ярлык для <Esc>
или <C-[>
который может быть труднодоступным на некоторых клавиатурах:
inoremap jk <Esc>l
Различные способы войти в режим вставки
команда | Описание |
---|---|
a | Добавить текст после текущей позиции курсора |
A | Добавить текст в конце текущей строки |
i | Вставить текст перед текущей позицией курсора |
I | Вставить текст перед первым непустым символом текущей строки |
gI | Вставить текст в первый столбец строки курсора |
gi | Вставить текст в том же положении, где он был последний раз в режиме Вставки |
O | Откройте новую строку над текущей строкой и добавьте туда текст (CAPITAL O ) |
o | Откройте новую строку под текущей строкой и добавьте там текст (в нижнем регистре o ) |
s или cl | Удалить символ под курсором и переключиться в режим вставки |
S или cc | Удалите всю строку и переключитесь в режим вставки |
C | Удалить из позиции курсора в конец строки и начать режим вставки |
c{motion} | Удалить {motion} и начать режим вставки (см. Основное движение ) |
Вставить горячие клавиши
команда | Описание |
---|---|
<Cw> | Удалить слово перед курсором |
<Ct> | Текущая строка shiftwidth с помощью одной shiftwidth |
<Cd> | Отключить текущую строку с помощью одной shiftwidth |
<Cf> | reindent the line, (переместите курсор в позицию автоматического отступа) |
<Ca> | Вставить ранее вставленный текст |
<Ce> | Вставьте символ ниже |
<Ch> | Удаление одного символа назад |
<Cy> | Вставьте символ выше |
<Cr>{register} | Вставьте содержимое {register} |
<Co>{normal mode command} | выполнить {normal mode command} не покидая режим вставки |
<Cn> | Следующая опция автозаполнения для текущего слова |
<Cp> | Предыдущий вариант автозаполнения для текущего слова |
<Cv> | Вставьте символ по его значению ASCII в десятичном значении |
<Cv>x | Вставьте символ по его значению ASCII в шестнадцатеричном формате |
<Cv>u | Вставьте символ по его значению в формате Юникод в шестнадцатеричном формате |
<Ck> | Введите орграф |
Запуск обычных команд из режима вставки
В режиме вставки нажмите <Co>
чтобы временно выйти из режима вставки и выполнить одноразовую нормальную команду.
пример
<Co>2w
переходит ко второму слову влево и возвращается в режим вставки.
Примечание: Повторение с .
будет только повторять действия от возврата в режим вставки
Это позволяет использовать некоторые полезные сопоставления, например
inoremap <C-f> <Right>
inoremap <C-b> <Left>
inoremap <C-a> <C-o>^
inoremap <C-e> <C-o>$
Теперь ctrl + a поместит курсор в начало строки и ctrl + e - в конец строки. Эти сопоставления используются по умолчанию в readline
, поэтому могут быть полезны для людей, которые хотят согласованности.
Вставлять текст сразу в несколько строк
Нажмите Ctrl + v, чтобы войти в режим визуальных блоков.
Используйте ↑ / ↓ / j / k для выбора нескольких строк.
Нажмите Shift + i и начните вводить то, что вы хотите.
После нажатия клавиши Esc текст будет вставлен во все выбранные вами строки.
Помните, что Ctrl + c не на 100% эквивалентен Esc и не будет работать в этой ситуации!
Есть небольшие вариации Shift + i, которые вы можете нажать в режиме визуального блока:
ключ | Описание |
---|---|
c или s | Удалить выбранный блок и войти в режим вставки |
С | Удалите выбранные строки (от курсора до конца) и введите режим вставки |
р | Удалите выбранные строки и введите режим вставки |
Добавить к выбранным строкам, с колонкой в конце первой строки |
Также обратите внимание, что нажатие . после операции визуального блока будет повторяться эта операция, в которой находится курсор!
Вставить текст, используя команду «вставить» терминала
Если вы используете команду вставки из программы эмулятора терминала, Vim будет интерпретировать поток символов, как если бы они были напечатаны. Это вызовет все виды нежелательных эффектов, особенно плохую поправку.
Чтобы исправить это, из режима команды:
:set paste
Затем перейдите в режим вставки, например, с i . Обратите внимание, что режим теперь -- INSERT (paste) --
. Теперь вставьте команду терминала эмулятора или с помощью мыши. По завершении перейдите в командный режим с Esc и запустите:
:set nopaste
Существует более простой способ, когда вы хотите вставить только один раз. Поместите это в свой .vimrc (или используйте плагин unimpaired.vim ):
function! s:setup_paste() abort
set paste
augroup unimpaired_paste
autocmd!
autocmd InsertLeave *
\ set nopaste |
\ autocmd! unimpaired_paste
augroup end
endfunction
nnoremap <silent> yo :call <SID>setup_paste()<CR>o
nnoremap <silent> yO :call <SID>setup_paste()<CR>O
Теперь можно просто нажать yo
чтобы вставить код под курсором, а затем <Esc>
вернуться в обычный режим / nopaste.
Вставка из регистра в режиме вставки
В режиме вставки вы можете использовать <Cr>
для вставки из регистра, который указан следующим нажатием клавиши. <Cr>"
например, пасты из неназванного ( "
) регистра.
См :help registers
.
Расширенные команды вставки и ярлыки
Вот краткая ссылка для расширенных команд вставки, форматирования и фильтрации / ярлыков.
Команда / Shortcut | Результат |
---|---|
g +? + m | Выполнять кодирование rot13, при движении m |
n + ctrl + a | + n на число под курсором |
n + ctrl + x | - n число под курсором |
g + q + m | Форматировать линии движения m до фиксированной ширины |
: r ce w | Центральные линии в диапазоне r до ширины w |
: r le i | Левые выровненные линии в диапазоне r с отступом i |
: r ri w | Правые выровняющие линии в диапазоне r до ширины w |
! тс | Линии фильтрации движения m через команду c |
n !! с | Фильтровать n строк по команде c |
: r ! с | Диапазон фильтра r строк через команду c |
Отключить автоматический отступ для вставки кода
При вставке текста через терминальный эмулятор функция автоматического отступа может уничтожить отступы вложенного текста.
Например:
function () {
echo 'foo'
echo 'bar'
echo 'baz'
}
будут вставлены как:
function () {
echo 'foo'
echo 'bar'
echo 'baz'
}
В этих случаях используйте параметр paste
/ nopaste
для отключения / включения функции автоматического отступа:
:set paste
:set nopaste
Добавляя к этому, существует более простой подход к проблеме: добавьте следующую строку в ваш .vimrc:
set pastetoggle=<F3>
И если вы хотите вставить, как из буфера обмена. Просто нажмите F3
в режиме insert
и вставьте. Нажмите F3
раз, чтобы выйти из режима paste
.