在Vim中粘贴时如何保持标签

Awa*_*ias 9 python vi vim copy-paste

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

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

其他网站建议粘贴'tabless'代码并使用可视化编辑器重新缩进,但是这涉及到大块时遇到麻烦

是否有任何设置可以应用于vim以维护复制/粘贴标签?

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

编辑:

我使用标准的gnome-terminal技术(ctrl + shift + c/mouse等)在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
Run Code Online (Sandbox Code Playgroud)

我查看了ts - >将制表位设置为n以进行文本输入,但不知道哪个值会保留制表符

rom*_*inl 6

查看:h tabstop所有选项以及它们如何相互作用.

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

set tabstop=4
set shiftwidth=4
set noexpandtab
Run Code Online (Sandbox Code Playgroud)

通过这些设置,您可以轻松<Tab>获得<Tab>.

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

set tabstop=4
set shiftwidth=4
set expandtab
Run Code Online (Sandbox Code Playgroud)

通过这些设置,您可以轻松<Tab>获得<Space><Space><Space><Space>.

无论您选择什么,都不应使用终端键绑定进行复制/粘贴.在Vim里面,你应该" y和"一起"拉"并用" p或" P; 可选择使用像一个特定的寄存器"ay/ "ap猛拉/把/从内容@a"+y/ "+p猛拉/粘贴从系统剪贴板/(如果你的Vim与剪贴板支持内置).

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


pil*_*her 5

罗曼尔说.此外,还有一些我认为有用的其他设置.这是我的.vimrc的摘录:

set autoindent " always set autoindenting on"
set smartindent " use smart indent if there is no indent file"
set tabstop=4 " <tab> inserts 4 spaces"
set softtabstop=4 " <BS> over an autoindent deletes 4 spaces."
set smarttab " Handle tabs more intelligently"
set expandtab " Use spaces, not tabs, for autoindent/tab key."
set shiftwidth=4 " an indent level is 4 spaces wide."
set shiftround " rounds indent to a multiple of shiftwidth"
Run Code Online (Sandbox Code Playgroud)

在vim中,输入:h <setting>每个设置以了解有关其功能的更多信息,


dje*_*kyb 5

我正在点击鼠标中键粘贴到终端 vim 实例中。我的 vimrc 中有这个:

set tabstop=2           " (ts)
set softtabstop=2       " (sts) Turned off with 0
set shiftwidth=2        " (sw)  Used for autoindent, and << and >>
set expandtab           " (et)  Expand tabs to spaces
Run Code Online (Sandbox Code Playgroud)

我跑了

:set paste
:set noexpandtab
Run Code Online (Sandbox Code Playgroud)

vim 保留了源文本中的选项卡。在不覆盖我的expandtab设置的情况下,vim 会自动扩展源文本中的选项卡。