Emacs到vim导致两个制表符

2024-10-04 05:22:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在正在编辑一个写在vimema中的文件。从一个切换到另一个时,我遇到了一个奇怪的问题:

在代码中的一些地方,看起来是随机的,emacs代码中有相当于两个选项卡的选项卡(在emacs和python中都是可视的)。但是,在vim中,这些制表符只显示为一个制表符。你知道吗

当I:set list时,几个行的示例将显示为:

    for i in range(total_pairs):$
^Iwhile 1:$
^I    rint = random.randint(0,total_pairs-1)$
^I    if(trialData[rint].cueDir == FORWARD)$
^I^ItrialData[rint].cueDir=BACKWARD$
^I^Ibreak$

但它应该显示为:

    for i in range(total_pairs):$
        while 1:$
            rint = random.randint(0,total_pairs-1)$
            if(trialData[rint].cueDir == FORWARD):$
                trialData[rint].cueDir = BACKWARD$
                break$

代码仍然以任何一种方式运行,但读起来相当烦人。你知道吗

当我运行:retab时,它用一个选项卡替换每个^I,而不是它应该替换的两个选项卡。如何将每个^I字符替换为两个制表符而不是一个制表符。还有,为什么会这样?你知道吗

谢谢。你知道吗


Tags: 代码inforifrangerandom选项卡制表符
2条回答

When I run :retab, it replaces each ^I with one tab, instead of the two tabs that it should.

:retabtabstop空格替换每个制表符(即^I)。在您的例子中,tabstop显然被设置为4,所以Vim用4个空格替换文件中的每个^I。如果希望:retab用8个空格替换每个^I,请在:retab之前使用set tabstop=8。你知道吗

为了解决实际问题,不要在Python中使用混合缩进;将Emacs和Vim都设置为使用空格作为制表符。你知道吗

有关详细信息,请参见:h expandtab:h tabstop:h softtabstop:h shiftwidth。你知道吗

简单的(也是推荐的)答案是用4个空格替换每个选项卡,并将emacs和vim设置为在按下tab时使用4个空格。你知道吗

相关问题 更多 >