Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在vim中删除/拖动粘贴并使其正确缩进?(不是说:粘贴)_Vim_Auto Indent - Fatal编程技术网

如何在vim中删除/拖动粘贴并使其正确缩进?(不是说:粘贴)

如何在vim中删除/拖动粘贴并使其正确缩进?(不是说:粘贴),vim,auto-indent,Vim,Auto Indent,请注意,这与:粘贴/:nopaste和剪贴板无关。我说的是完全在vim d,y,p中复制和粘贴 将代码块从外部块复制并粘贴到内部块是很常见的。不幸的是,缩进仍然在外部块的级别,我必须在之后缩进它 我想做的是从: function foo() { } var bar; var bazz; 到 在vim中,我通常做的是: 我去排队 2切换到可视模式 3突出显示行 4 dd删除行 5向上移动光标 要粘贴的6个p 7进入视觉模式 8突出显示行 9>>以缩进行 我希望它自动缩进到正确的位置。如果我不需要

请注意,这与:粘贴/:nopaste和剪贴板无关。我说的是完全在vim d,y,p中复制和粘贴

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

我想做的是从:

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

在vim中,我通常做的是:

我去排队

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

我遇到了这个插件


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

这是一个很好的插件。我也用它。但了解这些东西是如何工作的很好。干杯
p to paste text
`[v`] to selecte Pasted text
= to autoindent selected text