如何在vim中删除/复制并正确缩进?(不是指:paste)

3
请注意,这与`:paste` / `:nopaste`和剪贴板无关。我是指在vim中进行完全的复制和粘贴(`d`,`y`,`p`)。
通常会将代码块从外部块复制并粘贴到内部块中。不幸的是,缩进仍然在外部块的级别上,我之后还要重新缩进它。
我想做的是从:
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个回答

5
你可以轻松地将此键映射设置为在粘贴时执行自动缩进。
例如,
nnoremap gp p`[v`]=

细分:

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

2

这是一个不错的插件,我也在使用它。但是了解它的工作原理是很好的。干杯。 - ronakg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接