如何防止空间成为Eclipse中的标签(w / PyDev)

时间:2015-05-11 16:06:23

标签: eclipse whitespace pydev spaces

我对Eclipse有一个不幸的问题,只会在现有的Python文件中发生,其中包含选项卡。它不会发生在空文件或非.py文件中。

基本上,如果我尝试复制然后超过3个空格,我最终会为每个X空格添加标签,X是编辑器每个空间设置的字符数。在我的情况下,这是4,所以我最终得到以下结果:

Copy and paste 1 space:       " "         (one space)
Copy and paste 3 spaces:      "   "       (three spaces)
Copy and paste 6 spaces:      "\t  "      (one tab, two spaces)
Copy and paste 9 spaces:      "\t\t "     (two tabs, one space)
Copy and paste 12 spaces:     "\t\t\t"    (three tabs)

对于我的生活,我无法弄清楚为什么会发生这种情况或如何关闭它。如果必须手动编辑我粘贴的每一行而不是准确地获取我首先复制的内容,那真的很令人沮丧。

有谁知道这是什么设置,或者它只是一个错误?

编辑:要清楚当我点击Tab键时我不想要空格,当我要求制表符时我想要制表符。但是,当我想粘贴一个空格时,我不希望这些字符发生变化,特别是如果它在单引号或双引号之间清楚,只是试图按原样写文字。

2 个答案:

答案 0 :(得分:0)

您是否尝试搜索常规编辑器首选项? :

Window > Preferences > General > Editors > Text Editors

或在:

Window > preferences > PyDev > Editor

空间和空间应该有一些选择。标签

如果您的文件已包含标签,则可以尝试: Window > Preferences --> PyDev --> Editor

然后停用Assume tab spacing when file contain tabs

答案 1 :(得分:0)

这是因为在:

org.python.pydev.editor.autoedit.AbstractIndentPrefs.convertToStd(IDocument,DocumentCommand)它会两种方式(要么制作空格 - >标签或标签 - >空格),所以,没有& #39;真的可以选择让它保持原样。

即:https://github.com/fabioz/Pydev/blob/development/plugins/org.python.pydev/src/org/python/pydev/editor/autoedit/AbstractIndentPrefs.java

代码:

private String convertSpacesToTabs(IDocument document, String text, int offset, String indentString)
        throws BadLocationException {
    String spaceStr = StringUtils.createSpaceString(getTabWidth());
    while (text.startsWith(spaceStr)) {
        text = text.replaceAll(spaceStr, "\t");
    }
    return text;
}

这里有两种可能的解决方法:

  1. 创建一个选项,以便不进行转换。
  2. 改进convertSpacesToTabs,以便更好地猜测缩进,而不是使用制表符宽度(这样转换可以做得更好)。
  3. 由于PyDev是开源的,理想情况下有人可以提供补丁(请参阅http://pydev.org/developers.html获取代码)。

    否则,您可以在https://sw-brainwy.rhcloud.com/tracker/PyDev;)

    创建故障单