我在 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/