Wie in den Kommentaren erwähnt, gibt es Befehle für Convert Einrückungen zu Spaces und Convert Einrückungen zu Tabs.
Diese können auch mit den expand_tabs
und unexpand_tabs
Befehle bzw. aufgerufen werden, so dass, wenn Sie diese jedes Mal wenn Sie Einfügen in eine Datei schießen möchten, können Sie ein kleines Plugin erstellen.
Gehen Sie zu Preferences > Browse Packages
und erstellen Sie eine neue Datei (z. B. autoindent.py
) unter dem Ordner User
. Fügen Sie die folgenden:
import sublime_plugin
class AutoIndentListener(sublime_plugin.EventListener):
def on_post_text_command(self, view, command_name, args):
if command_name in ['paste', 'paste_and_indent']:
s = view.settings()
tab_size = s.get('tab_size')
if s.get('translate_tabs_to_spaces'):
view.run_command('expand_tabs')
else:
spaces = 4
if tab_size == spaces:
view.run_command('unexpand_tabs')
else:
view.run_command(
'set_setting',
{"setting": "tab_size", "value": spaces})
view.run_command('unexpand_tabs')
view.run_command(
'set_setting',
{"setting": "tab_size", "value": tab_size})
view.run_command('unexpand_tabs')
Jedes Mal, wenn Sie die paste
oder paste_with_indent
Shortcuts verwenden, ist es die translate_tabs_to_spaces
Einstellung der aktuellen Ansicht prüft (einrücken Mit Spaces im Menü oben) und führt den entsprechenden Befehl auf die Datei.
bearbeiten
Wenn Sie wissen, wie viele Räume der Code, den Sie Einfügen sind hat Ich denke, etwas Ähnliches wie die oben wahrscheinlich die einfachste Möglichkeit. Es setzt im Wesentlichen nur die Tab-Größe auf die Größe der Leerzeichen (bis 4 in diesem Fall), wenn nicht das Gleiche, konvertiert den 4-Abstand Code in Tabs, dann setzt und konvertiert zu was auch immer die Tab-Größe ursprünglich festgelegt wurde .
Wenn Sie etwas mehr beteiligt (das erkennt die Vertiefung des eingefügten Code, zum Beispiel) und fühle mich wie ein Blick auf den Code mit, entpacken Default.sublime-package
vom Haupt Sublime Ordner Pakete und haben einen Blick auf:
detect_indentation.py
: Enthält Code, der aufgerufen wird, wenn Sie raten Einstellungen aus dem Puffer wählen aus dem Menü (siehe oben), die möglicherweise geändert werden, um die Vertiefung des eingefügten Code zu erraten.
indentation.py
: Es enthält den Code für expand_tabs
und unexpand_tabs
. Beide sind Unterklassen von TabCommand
, so können Sie Unterklasse und implementieren Sie Ihre eigenen.
z.
from Default.indentation import TabCommand
class UnexplodeTabs(TabCommand):
def do(self, edit, only_leading=True, spaces=None, **kw):
# your code
Dann können Sie die oben ersetzen:
import sublime_plugin
class AutoIndentListener(sublime_plugin.EventListener):
def on_post_text_command(self, view, command_name, args):
if command_name in ['paste', 'paste_and_indent']:
s = view.settings()
if s.get('translate_tabs_to_spaces'):
view.run_command('expand_tabs')
else:
view.run_command('unexplode_tabs')
Eine mögliche manuelle Abhilfe ist, die Befehlspalette zu verwenden. Es gibt Befehle für ** In Leerzeichen konvertieren ** und ** In Tabs konvertieren **. Aufgrund des Fuzzy-Abgleichs können Sie in der Regel schnell dazu kommen, indem Sie 'ctspace' oder' cttab' eingeben. –