如何 delete/yank 粘贴到 vim 中并使其正确缩进? (不是在谈论:粘贴)

How can I delete/yank paste in vim and have it indent correctly? (not talking about :paste)

请注意,这 NOT:paste / :nopaste 和剪贴板相关。我说的是完全在 vim(dyp)内复制和粘贴。

将代码块从外部块复制并粘贴到内部块是很常见的。不幸的是,缩进仍然在外部块的水平,我必须在之后缩进它。

我想做的是从:

function foo() {
}
var bar;
var bazz;

function foo() {
  var bar;
  var bazz;
}

在vim我通常做的是:

1) 去行

2) 切换到视觉模式

3) 突出显示行

4) dd 删除行

5) 向上移动光标

6) P 粘贴

7) 进入可视模式

8) 突出显示行

9) >> 缩进行

我希望它自动缩进到正确的位置。如果我不需要重新突出显示行然后手动缩进它们,那么工作流程会更加顺畅。也就是说,去掉第 7-9 步。

有人知道这样做的方法吗?

您可以轻松地将其设为在粘贴过程中自动缩进的键映射。

例如,

nnoremap gp p`[v`]=

细分:

p to paste text
`[v`] to selecte Pasted text
= to autoindent selected text

我遇到了这个插件。

https://github.com/sickill/vim-pasta

看起来它的功能与上面提到的 ronakg 相同,但还增加了一些功能。