python - 如何在 Vim 中粘贴时保持制表符

标签 python vim copy-paste vi

我在 Vim 中使用 tab 键来缩进我的 python 代码,但是每当我复制和粘贴一个 block 时,Vim 都会用 4 个空格替换每个制表符,这会引发 IndentationError

我尝试按照相关问题中的建议设置 :set paste 但没有任何区别

其他站点建议粘贴'tabless'代码并使用可视化编辑器重新缩进,但这在涉及大块时会带来麻烦

我可以对 vim 应用任何设置来维护复制/粘贴标签吗?

感谢您对此的任何帮助:)

编辑:

我正在使用标准的 gnome 终端技术(ctrl+shift+c/鼠标等)在 vim 中复制和粘贴

我的 .vimrc 是:

syntax on
set ts=4
if has("terminfo")
let &t_Co=8
let &t_Sf="\e[3%p1%dm"
let &t_Sb="\e[4%p1%dm"
else
let &t_Co=8
let &t_Sf="\e[3%dm"
let &t_Sb="\e[4%dm"
endif

我查了一下 ts -> Sets tab stops to n for text input,但不知道什么值会保持制表符

最佳答案

参见 :h tabstop了解所有选项以及它们如何相互作用。

如果您喜欢标签,这些是很好的设置:

set tabstop=4
set shiftwidth=4
set noexpandtab

通过这些设置,您可以点击 <Tab>然后你得到 <Tab> .

如果您喜欢空格,这些是很好的设置:

set tabstop=4
set shiftwidth=4
set expandtab

通过这些设置,您可以点击 <Tab>然后你得到 <Space><Space><Space><Space> .

无论您选择什么,都不应使用终端键绑定(bind)进行复制/粘贴。在 Vim 中,你应该用 y “猛拉”并用 p “放”或 P ;可选地使用特定的寄存器,如 "ay/"ap@a 的内容中抽出/放入/取出或 "+y/"+p从系统剪贴板中提取/粘贴(如果你的 Vim 支持剪贴板)。

作为旁注,您应该使用设置的长格式名称,因为它们比短名称更易读。您 future 的自己会感谢您。

关于python - 如何在 Vim 中粘贴时保持制表符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12584465/

相关文章:

python - 将三列之间的数学运算结果附加到下一行

python - ReactJs 中的 Django 表单

search - 在 vim 中突出显示 find next

excel - xlPasteValues 和 xlPasteFormats 同时存在

VBA - 复制行 - 如果发现错误,则继续复制单元格

python - SQLAlchemy 是否与 Django 的 get_or_create 等效?

python 蛋 : where is it installed?

vim - 如何在 Python 中突出显示成员变量?

vim - vim 中的 "set ic"命令导致模式不匹配

javascript - 如何禁止在表单中复制/粘贴?