Sublime Text 3,将空格转换为制表符

chr*_*ris 175 tabs spaces auto-indent sublimetext sublimetext3

我知道有很多关于此的帖子,但我无法让它发挥作用.
我用标签进行编码.有没有办法,将空格始终转换为制表符?即打开和保存文件?有人有个主意吗?

//编辑:
我的愿望就是自动完成!- >打开,保存或动起来
有谁知道该怎么办?


我试过这个:

import sublime, sublime_plugin, os

class ExpandTabsOnSave(sublime_plugin.EventListener):
  # Run ST's 'expand_tabs' command when saving a file
  def on_pre_save(self, view):
    if view.settings().get('expand_tabs_on_save') == 1:
      view.window().run_command('expand_tabs')
Run Code Online (Sandbox Code Playgroud)

这是我的用户设置:

{
    "auto_complete_selector": "source - comment, meta.tag - punctuation.definition.tag.begin",
    "auto_indent": true,
    "detect_indentation": true,
    "draw_white_space": "all",
    "ensure_newline_at_eof_on_save": true,
    "expand_tabs_on_save": true,
    "font_face": "SourceCodePro-Regular",
    "font_size": 10,
    "format_on_save": true,
    "ignored_packages":
    [
        "Vintage"
    ],
    "indent_to_bracket": true,
    "open_files_in_new_window": false,
    "smart_indent": true,
    "tab_size": 4,
    "translate_tabs_to_spaces": false,
    "trim_automatic_white_space": true,
    "trim_trailing_white_space_on_save": true,
    "use_tab_stops": false,
    "word_wrap": false
}
Run Code Online (Sandbox Code Playgroud)

ang*_*son 338

在Sublime Text窗口的右下角,您会看到一个看起来很像这样的缩进指示符:

缩进选项菜单

单击它将打开一个菜单,其中包含用于调整缩进首选项的选项,更重要的是,将空格转换为制表符,反之亦然.

下面列出了相同的菜单View -> Indentation.

  • 是的我知道.我的愿望是自动制作这个......任何想法? (39认同)
  • @chrisツ啊.你可以重新格式化你的问题,使其更明确吗?我错过了你的意思,所以其他人也可能. (2认同)

eri*_*ier 128

在Sublime窗口的底部,您将看到代表您的标签/空间设置的内容.

然后,您将获得一系列选项的下拉列表.您关心的选项是:

  • 将缩进转换为空格
  • 将缩进转换为制表符

将所需的设置应用于整个文档.

希望这可以帮助.

  • 我希望这可以在线上完成并自动...对于我打开的所有文件.我的意思是:将缩进空间转换为制表符.它将在负载下自动运行:-) (2认同)

小智 77

您可能已经知道,您可以自定义缩进设置Preferences.sublime-settings,例如:

"detect_indentation": true,
"tab_size": 4,
"translate_tabs_to_spaces": false
Run Code Online (Sandbox Code Playgroud)

这将设置您的编辑器使用4个空格宽的选项卡,并将覆盖导致Sublime匹配您正在编辑的任何文件的缩进的默认行为.使用这些设置,重新缩进文件将导致任何空格被替换为制表符.

至于在打开文件时自动重新缩进,这并不是那么容易(但可能不是一个好主意,因为空白更改会对文件差异造成严重破坏).什么是更好的行动方案:您可以映射重新缩进的快捷方式,并在您打开需要修复的新文件时触发该快捷方式.


Joj*_*leo 7

您可以使用命令选项板来解决此问题。

步骤1 :(Ctrl + Shift + P激活命令选项板)

步骤2:输入“缩进”,选择 "Indentation: Convert to Tabs"


The*_*der 5

这是一个解决方案,每当您打开文件时,它都会自动转换为选项卡。

创建这个文件.../Packages/User/on_file_load.py::

import sublime
import sublime_plugin

class OnFileLoadEventListener(sublime_plugin.EventListener):

    def on_load_async(self, view):
        view.run_command("unexpand_tabs")
Run Code Online (Sandbox Code Playgroud)

笔记。它会导致文件在打开后处于未保存状态,即使没有发生实际的空格到制表符转换...也许有些人可以帮助修复该问题...


vlj*_*ljs 5

就我而言,此行解决了问题:

"translate_tabs_to_spaces": false
Run Code Online (Sandbox Code Playgroud)