Мне часто приходится вставлять некоторые вещи в новую строку в vim. Что я обычно делаю, это:
o<Esc>p
Который вставляет новую строку и переводит меня в режим вставки, затем выходит из режима вставки и, наконец, вставляет.
Три нажатия клавиш. Не очень эффективно. Есть идеи получше?
Ответы:
Вскоре после
:help p
этого говорится:К сожалению, оно не короче вашего текущего решения, если вы не объединили его с какой-то картой клавиатуры, как это предлагается в другом ответе. Например, вы можете сопоставить его с любым ключом (даже
p
):источник
:pu[t]
поместим текст в новую строку после текущей строки,:pu[t]!
поместим текст в новую строку перед текущей строкой. Я буду редактировать свой ответ соответственно. (Ура для:help p
.):nmap p :pu<CR>
поместите ее в свой файл .vimrc и всеПараметры:
1) Используйте,
yy
чтобы выдернуть всю строку (включая символ конца строки).p
затем вставит строку в новую строку после текущей иP
( Shift- P) вставит над текущей строкой.2) Сделайте сопоставление: тогда это только один или два ключа:
3) Версия функции отображения (на самом деле ненужная, но только для полноты):
источник
Вы можете вставить буфер в режиме вставки, используя
<C-R>
имя буфера для вставки. Буфер по умолчанию"
, так что вы бы сделалиЯ обнаружил, что использую это
<C-R>"
очень часто, и связал это с<C-F>
моим vimrc:источник
Это все еще использует три нажатия клавиши, но я считаю, что это проще, чем Esc:
o<Alt-p>
Поскольку после нажатия o вы находитесь в режиме вставки, модификатор Alt позволит вам использовать команду, как если бы вы ее не использовали.
источник
Используя этот плагин: https://github.com/tpope/vim-unimpaired
]p
пасты на линии ниже[p
пасты на линии вышепреимущества:
источник
tpope/vim-unimpaired
для этого нужно работать 😉.Лично я nmapped Enter (CR), как это:
... на основе этой статьи Vim Wikia.
Таким образом, я могу создавать новые строки непосредственно из обычного режима, и в сочетании с желанием вставить новую строку ниже, я бы сделал:
Вы также можете пропустить k в nmap выше, в зависимости от того, какие функции вы предпочитаете от Enter , так что это будет просто
<CR>p
.Я также изобразил jj для Esc , который также помог бы в этом случае. Esc слишком далеко от домашнего ряда, чтобы понять, насколько он важен для vim.
Не короче, чем другие решения, но я думаю, что он кажется менее неуклюжим, чем некоторые из них, и у него тоже есть другие применения.
источник
Если вы копируете целую строку, а затем вставляете целую строку, используйте,
Y
чтобы сначала восстановить строку или строки, включая разрыв строки, иp
вставить. Вы также можете использовать режимV
визуальной линии , в отличие от обычногоv
для визуального режима.источник
У меня есть картография
inoremap jj <ESC>
. Так что легко вставить новую строку сojj
и,Ojj
а затемp
.так что
ojjp
вставьте новую строку. тогда есть еще один удар,o<esc>p
ноojjp
для меня это легко.источник
Я нашел элегантное решение для этого. Если вы помещаете регистр янки в буфер обмена вашей ОС (что в любом случае здорово), с
чем ты можешь сделать
o<Ctl-v>
.Помимо меньшего количества штрихов, это улучшает оба
o<Esc>p
и:pu
потому, что сохраняет отступы: оба других параметра начинаются с нулевого символа в новой строке.Предостережение заключается в том, что это может зависеть от ОС. Все, что я знаю, это то, что он работает на последней версии OS X, но буфер обмена - это только один из многих способов получить рывок в буфере обмена OS.
источник
Если вы также хотите завершить в режиме вставки, можно вставить в режиме вставки, используя
CTRL-R "
.https://stackoverflow.com/a/2861909/461834Все еще три нажатия клавиш, но без выхода, и вы сохраняете нажатие клавиш, если хотите все равно завершить вставку.
источник
Я использую следующее сопоставление в моей конфигурации Neovim:
Небольшое объяснение:
m`
: установить отметку в текущей позиции курсора.o<Esc>p
: создайте новую строку ниже и вставьте текст в эту строкуO<Esc>P
: создайте новую строку выше и вставьте текст в эту строку``
: установить курсор в исходное положениеСмотрите
:h mark
для получения дополнительной информации о знаках в Vim.источник
Если вы хотите остаться в режиме вставки, вы можете сделать
o ctrl+o p
o
- вставить режим и перейти на новую строкуctrl+o
- запустить одну команду, как в обычном режимеp
- вставитьЭто три нажатия клавиш, но вы остаетесь в режиме вставки, а также
o ctrl+o
довольно быстро, поэтому я лично отношусь к нему как к 2,5 нажатиям клавиш.источник
Это решение, кажется, применимо только тогда, когда блок скопированного текста начинается с новой строки (в отличие от захвата фрагмента текста где-то внутри строки), но вы всегда можете начать копирование с последнего символа, который хотите захватить, и затем перейти до последнего символа в конце строки перед началом нужного вам блока копирования. Затем, когда вы хотите вставить его, поместите курсор в конец строки, под которой вы хотите вставить текст, и нажмите p. Если я не облажался с объяснением, это должно обеспечить тот эффект, который вы ищете.
источник