如何 delete/yank 粘贴到 vim 中并使其正确缩进? (不是在谈论:粘贴)
How can I delete/yank paste in vim and have it indent correctly? (not talking about :paste)
请注意,这 NOT 与 :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 步。
有人知道这样做的方法吗?
您可以轻松地将其设为在粘贴过程中自动缩进的键映射。
例如,
nnoremap gp p`[v`]=
细分:
p to paste text
`[v`] to selecte Pasted text
= to autoindent selected text
我遇到了这个插件。
https://github.com/sickill/vim-pasta
看起来它的功能与上面提到的 ronakg 相同,但还增加了一些功能。
请注意,这 NOT 与 :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 步。
有人知道这样做的方法吗?
您可以轻松地将其设为在粘贴过程中自动缩进的键映射。
例如,
nnoremap gp p`[v`]=
细分:
p to paste text
`[v`] to selecte Pasted text
= to autoindent selected text
我遇到了这个插件。
https://github.com/sickill/vim-pasta
看起来它的功能与上面提到的 ronakg 相同,但还增加了一些功能。