问题:Vim粘贴时如何维护标签

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

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

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

是否有任何设置可以应用于 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 -> 将制表位设置为 n 以进行文本输入,但不知道什么值会保持制表符

解答

有关所有选项以及它们如何相互交互,请参见: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>

无论您选择什么,都不应使用终端键绑定进行复制/粘贴。在 Vim 中,你应该用y“拉”,用pP“放”;可选地使用一个特定的寄存器,比如"ay/"ap来从@a"+y/"+p的内容中提取/粘贴到/从系统剪贴板中提取/粘贴(如果你的 Vim 是用剪贴板支持构建的)。

作为旁注,您应该使用设置的长格式名称,因为它们比短名称更具可读性。你未来的自己会感谢你。

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐