2017-02-28 9 views
5

私は崇高テキストにインデントするカスタムショートカットを使用しているこの記事でIndent multiple lines in Sublime Text不適切な崇高なインデント

を呼ばしかし、スペースの奇数がある場合、それは動作しません。私のタブのサイズは2つのスペースに設定されています。また、行頭に3つのスペースがある場合、残りのコードはインデントしません。例えば

<?php 

function test_indent() { 
    if (condition) { 
    echo "here"; 
    } 
    else { 
    echo "else"; 
    } 
} 

をそして私はある上記のポストに指定されたカスタムショートカット、とインデントする場合:

function test_indent() { 
    if (condition) { 
    echo "here"; 
} 
else { 
    echo "else"; 
} 
} 
:私にとって、それは次のようになり

{ "keys": ["ctrl+shift+f"], "command": "reindent", "args": {"single_line": false} } 

これを正しくインデントするには何が必要ですか?

+2

これを使って遊んでいる間に、ファイルを完全に 'インデント解除'すると、 'reindent'が期待通りに動作することがわかりました。 –

+0

私はあなたに全く同意します。これにはもっと良い解決策があるはずです。 –

+0

この動作は、多くの種類のファイルに影響するようです - PHPだけでなく – AdamS

答えて

4

unindentを最初に選択した場合、reindentが正常に動作することがわかりました。字下げが設定されている「タブサイズ」の倍数でない場合に発生するのは、reindentコマンドのバグです。

したがって、このバグを回避するには、ショートカットを変更して選択範囲を完全に取り消し、再度インデントし直してください。 Toolsメニューから

Developer選択 - >New Plugin...

すべてのものを選択し、次でそれを置き換える:

それ保存
import sublime 
import sublime_plugin 
import re 

class UnindentAndReindentCommand(sublime_plugin.TextCommand): 
    def run(self, edit): 
     while any([sel for sel in self.view.sel() if re.search('^[ \t]+', self.view.substr(sel.cover(self.view.line(sel.begin()))), re.MULTILINE)]): 
      self.view.run_command('unindent') 
     self.view.run_command('reindent', { 'single_line': False }) 

、STが示唆場所で、fix_reindent.pyようなものとして - ファイルを拡張子は重要ですが、ベース名は重要ではありません。その後

、先ほど作成した新しいunindent_and_reindentコマンドを使用して、あなたのキーバインドを変更:

{ "keys": ["ctrl+shift+f"], "command": "unindent_and_reindent" } 

をそして、それは正しく、あなたのコードを再調整します。

関連する問題