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

Bre*_*ung 3 vim auto-indent

请注意,这与/和剪贴板无关。我说的是完全在 vim 中复制和粘贴 ( , , )。:paste:nopastedyp

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

我想做的是从:

function foo() {
}
var bar;
var bazz;
Run Code Online (Sandbox Code Playgroud)

function foo() {
  var bar;
  var bazz;
}
Run Code Online (Sandbox Code Playgroud)

在 vim 中我通常做的是:

1)去线

2)切换到可视模式

3)突出显示行

4)dd删除行

5) 向上移动光标

6)P粘贴

7)进入可视模式

8)突出显示行

9)>>缩进行

我希望它自动缩进到正确的位置。如果我不需要重新突出显示行然后手动缩进,这将是一个更加顺畅的工作流程。换句话说,消除步骤 7-9。

有人知道有办法做到这一点吗?

ron*_*akg 5

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

例如,

nnoremap gp p`[v`]=
Run Code Online (Sandbox Code Playgroud)

分解:

p to paste text
`[v`] to selecte Pasted text
= to autoindent selected text
Run Code Online (Sandbox Code Playgroud)