Sublime Textのスペースインデントを修正/変換する方法は?


228

例:2スペースインデントのドキュメントがあり、4スペースインデントにしたい場合、Sublime Textエディターを使用して自動的に変換するにはどうすればよいですか?

回答:


525

ドキュメントのインデント間隔を変換するSublime Text 2または3の巧妙なトリックを以下に示します。

TL; DR:

2つのスペースから4つのスペースへの変換:

タブ幅が2に設定されていることを確認します。2スペースのインデントをタブに変換し、タブ幅4に切り替えてから、インデントをスペースに戻します。

詳細な説明:

移動:

View -> Indentation

それは読むべきです:

  • Indent using spaces [x]
  • Tab width: 2

選択する:

  • Convert Indentation to Tabs

次に選択:

  • Tab width: 4
  • Convert Indentation to Spaces

できました。


5
ありがとうございました!:D多くの時間を節約しました。注意。「検索:スペース-スペース=>すべて選択=>タブ」
Automatico

11
これらすべてをgist.github.com/joshmfrankel/5707020のために行う崇高なマクロを作成しました。お楽しみください:-)
Josh Frankel

2
タブがタブ幅全体を占めていないテキストファイルがある場合、「インデントをスペースに変換」も機能することを指摘しておきます。たとえば、作成者がタブを使用して列をフォーマットしたファイルの場合、タブで検索と置換を行うと、結果の列が整列しなくなります。「インデントをスペースに変換」を使用すると、正しく整列します
Joe Pinsonault

Joshのマクロを見る前に、同僚のためにマクロとこのためのキーバインドの例も作成しました。Mineはctrl + 2とctrl + 4を使用して、前後に切り替えることができます:gist.github.com/beaugunderson/8588871
Beau

74

私は実際に、ユーザーの好みを次のように定義するほうが私の正気にとってはより良いことを発見しました:

"translate_tabs_to_spaces": true,
"tab_size": 2,
"indent_to_bracket": true,
"detect_indentation": false

detect_indentation: false設定とは対照的に、Sublimeがすべてのファイルでこれらの設定を尊重するように強制するため、これは特に重要View -> Indentationです。

凝ったものにしたい場合は、次のコードをに貼り付けて、コード(YMMV)を自動的に再インデントするキーボードショートカットを定義することもできますSublime -> Preferences -> Key Binding - User

[
  { "keys": ["ctrl+i"], "command": "reindent" }
]

空白を視覚化するには:

"indent_guide_options": ["draw_active"],
"trim_trailing_white_space_on_save": true,
"ensure_newline_at_eof_on_save": true,
"draw_white_space": "all",
"rulers": [120],

9

私の考えでは、マグネよりも簡単な解決策が見つかりました。

Macの場合:

"cmd+f" => "  "(two spaces) => "alt+enter" => "arrow right" => "  "(two more spaces) => set tab width to 4(this can be done before or after.

Windowsや他のプラットフォームの変化にcmd+falt+enter何であなたfindselect allホットキーがあります。

注:コード内に複数のスペースがある場合、このメソッドは「エラー」を起こしやすくなります。したがって、マグネの方法ほど安全ではありませんが、(少なくとも私にとっては)高速です。


私はこれをそのように機能させることはできませんでしたが、私は原則を使用して検索と置換(Macではcmd-option-F)を行い、「」(4スペース)を」(2スペース)に置き換えました。そしてそれはうまくいった!
evanbikes 2013

これを行う別の方法を今見つけましたが、それは言語固有です。このようなフォーマットプラグインを使用している場合はRubyFormat、目的のタブサイズを設定して、コードを再フォーマットするだけです。それの場合RubyFormatでしょうcmd+shift+R
Automatico

7

提案の多くは2-> 4スペースに変換するときに機能します。4-> 2に変換すると、いくつかの問題が発生しました。

これが私が最終的に使用したものです:

Sublime Text 3/Packages/User/to-2.sublime-macro

[
  { "args": null, "command": "select_all" },
  { "args": { "set_translate_tabs": true }, "command": "unexpand_tabs" },
  { "args": { "setting": "tab_size", "value": 1 }, "command": "set_setting" },
  { "args": { "set_translate_tabs": true }, "command": "expand_tabs" },
  { "args": { "setting": "tab_size", "value": 2 }, "command": "set_setting" }
]

5

検索と置換を使用する方が速い場合は、次のように正規表現置換を使用できます。

検索(正規表現):("{2}"の(^|\G) {2}代わりに、2つのスペースを書き込むことができます。わかりやすくするためにここで使用します。) <space>{2}

4つのスペース、またはなどの任意のスペースに置き換えます\t


5

私はそれのためのプラグインを書きました。ここで見つけるか、パッケージコントロールで「ReIndent」を探してください。カイルフィンリーが書いたのとほとんど同じことを行いますが、2と4の間、およびその逆の変換のためのショートカットを使用した便利な方法で行います。


2

このコードをカスタムキーバインディングに追加する必要があります。

{ "keys": ["ctrl+f12"], "command": "set_setting", "args": {"setting": "tab_size", "value": 4} }

ctrl + f12を押すと、ファイルのタブサイズが4にインデントされます。別のタブサイズが必要な場合は、「値」の数値を変更するだけです。Te形式は単純なjsonです。


ありがとうございます!私は次のように2と4を追加しました:{ "keys": ["ctrl+f10"], "command": "set_setting", "args": {"setting": "translate_tabs_to_spaces", "value": 2} }, { "keys": ["ctrl+f11"], "command": "set_setting", "args": {"setting": "tab_size", "value": 2} }, { "keys": ["ctrl+f12"], "command": "set_setting", "args": {"setting": "tab_size", "value": 4} },
JREAM

0

私がした最も簡単なことは、

インデントをタブに変更しました

そしてそれは私の問題を解決しました。

同じことができます

スペースへ

あなたの必要性と同様に。

同じのスナップショットについて言及しました。

ここに画像の説明を入力してください


はい。ただし、インデントをスペースとして開始する場合と終了する場合の両方で問題が発生します。
Magne

0

最近、私は同様の問題に直面しました。私は崇高なエディタを使っていました。コードの問題ではなく、エディターの問題です。

以下の設定の変更は私のために働いた。

Sublime Textメニュー-> Preferences-> Settings:Syntax-Specific

{
    "tab_size": 4,
    "translate_tabs_to_spaces": true
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.