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

时间:2014-03-20 09:57:39

标签: tabs sublimetext sublimetext3 spaces auto-indent

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

//编辑:
我的愿望就是自动! - >打开,保存或在飞行中 有谁知道该怎么做?


我尝试了this

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')

这是我的用户设置:

{
    "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
}

11 个答案:

答案 0 :(得分:306)

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

Indentation options menu

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

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

答案 1 :(得分:120)

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

然后,您将获得一系列选项的下拉菜单。您关心的选项是:

  • 将缩进转换为空格
  • 将缩进转换为标签

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

希望这有帮助。

答案 2 :(得分:70)

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

"detect_indentation": true,
"tab_size": 4,
"translate_tabs_to_spaces": false

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

就打开文件时自动重新缩进而言,这并不是那么容易(但可能不是一个好主意,因为空白更改会对文件差异造成严重破坏)。什么是更好的行动方案:您可以map a shortcut for re-indention并在您打开需要修复的新文件时触发。

答案 3 :(得分:3)

就我而言,这条线解决了我的问题:

"translate_tabs_to_spaces": false

答案 4 :(得分:2)

这是一个解决方案,只要您打开文件,它就会自动转换为标签。

创建此文件:.../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")

请注意。它打开后会导致文件处于未保存状态,即使没有发生实际的空格到标签转换......也许有些人可以帮忙修复...

答案 5 :(得分:1)

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

步骤1:Ctrl + Shift + P(用于激活命令面板)

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

答案 6 :(得分:0)

要在保存时自动将空格转换为制表符 ,请将以下Python脚本添加到“ $ SUBLIME_HOME $ \ Packages \”中名为“ UnexpandTabsOnSave”的新创建的子文件夹中:

import sublime, sublime_plugin, os

class ConvertSpacesToTabsOnSave( sublime_plugin.EventListener ):
  # Run Sublime's 'unexpand_tabs' command when saving any file
  def on_pre_save( self, view ):
    view.window().run_command( 'unexpand_tabs' )

谢谢您的初始资源。

答案 7 :(得分:0)

您可以通过以下方式在所有项目文件中用空格替换制表符:

  1. 执行全部替换Ctrl+Shif+F
  2. 设置正则表达式搜索^\A(.*)$
  3. 将目录设置为Your dir
  4. 替换为\1

    enter image description here

  5. 这将导致所有项目文件被打开,其缓冲区被标记为脏文件。这样,您现在可以选择启用这些下一个Sublime Text设置,以修剪所有尾随空白的文件并确保每个文件末尾都有新行。

    您可以通过进入菜单Preferences -> Settings并将这些内容添加到设置文件中来启用这些设置:

    1. "ensure_newline_at_eof_on_save": true,
    2. "trim_trailing_white_space_on_save": true,
  6. 通过进入菜单View -> Show Console (Ctrl+`)来打开Sublime Text控制台并运行以下命令: import threading; threading.Thread( args=(set(),), target=lambda counterset: [ (view.run_command( "expand_tabs", {"set_translate_tabs": True} ), print( "Processing {:>5} view of {:>5}, view id {} {}".format( len( counterset ) + 1, len( window.views() ), view.id(), ( "Finished converting!" if len( counterset ) > len( window.views() ) - 2 else "" ) ) ), counterset.add( len( counterset ) ) ) for view in window.views() ] ).start()
  7. 现在,通过转到菜单File -> Save All
  8. 保存所有更改的文件

答案 8 :(得分:0)

如果您使用Mac,则只需使用帮助选项(通常是Mac菜单栏上的最后一个选项) 然后输入:“制表符缩进”并选择制表符缩进宽度

,但是通常,您可以按照以下路径操作: 查看->缩进

答案 9 :(得分:0)

使用以下命令将其解决:

autopep8 -i <filename>.py

答案 10 :(得分:-1)

以下是如何在保存时自动执行此操作: https://coderwall.com/p/zvyg7a/convert-tabs-to-spaces-on-file-save

不幸的是,当您从软件包管理器安装软件包时,软件包无法运行。