如何在vim中删除/ yank粘贴并正确缩进? (不是在谈论:粘贴)

时间:2016-04-14 22:21:38

标签: vim auto-indent

请注意,与: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。

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

2 个答案:

答案 0 :(得分:1)

您可以轻松地将其作为粘贴的自动缩进键盘图。

例如,

nnoremap gp p`[v`]=

故障:

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

答案 1 :(得分:1)

我遇到过这个插件。

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

看起来它与上面提到的ronakg具有相同的功能。