Sublime Text: 行とインデントの入れ替え

Sublime Text: 行とインデントの入れ替え

最近、atom を試してみました。速度が遅すぎたにもかかわらず、気に入った点が 1 つありました。それは、基本的にどこでも自動インデントが機能することです。

私は見つけたここPaste + Indent the defaultSublime Text で作成する方法。

しかし、私は次のことも望んでいます:

{ "keys": ["ctrl+shift+up"], "command": "swap_line_up" },
{ "keys": ["ctrl+shift+down"], "command": "swap_line_down" },

swap_line_up_and_indent私が持っている場合、次のようになります。

console.log('hello');
function() {

}

そして私はctrl+shift+down、次の結果を得ます:

function() {
  console.log('hello'); // indented yai!!
}

チャンスはある?

答え1

そのため、これを実現する最も簡単な方法は(かなり大規模なプラグインを書く以外では)大きい。 ここはswap_line_down_and_indent.sublime-macro

[
    {
        "command": "swap_line_down"
    },
    {
        "command": "indent"
    }
]

そしてswap_line_up_and_indent.sublime-macro

[
    {
        "command": "swap_line_up"
    },
    {
        "command": "move",
        "args":
        {
            "by": "lines",
            "forward": true
        }
    },
    {
        "command": "indent"
    }
]

選択時に開かれるフォルダにファイルを保存するPackages/User場所PackagesPreferences → Browse Packages…次に、次のようにカスタム キーマップを編集します。

{ 
    "keys": ["ctrl+shift+up"], 
    "command": "run_macro_file", 
    "args": 
    {
        "file": "res://Packages/User/swap_line_up_and_indent.sublime-macro"
    } 
},
{ 
    "keys": ["ctrl+shift+down"], 
    "command": "run_macro_file", 
    "args": 
    {
        "file": "res://Packages/User/swap_line_down_and_indent.sublime-macro"
    } 
}

これで準備は完了です。ただし、注意点がいくつかあります。これらのマクロは 1 レベルしかインデントしないため、行をさらにインデントするには を使用する必要がある場合があります。また、コマンドの実行Ctrl]後、インデントされる行は下の行であると想定されます。swap_line_[up|down]

答え2

「Chain of Command」パッケージを使用しても、同じことができます。パッケージをインストールし、ユーザー キー バインディング ファイルに次の内容を追加するだけです。

{
   "keys": ["ctrl+super+up"], 
   "command": "chain", 
   "args": {
     "commands": [
       ["swap_line_up"],
       ["reindent", {"single_line": false}]
     ],
   },
 },
{
  "keys": ["ctrl+super+down"], 
  "command": "chain", 
  "args": {
    "commands": [
      ["swap_line_down"],
      ["reindent", {"single_line": false}]
    ],
  },
}

関連情報