Sublime text: Поменять местами строку и отступ

Sublime text: Поменять местами строку и отступ

Недавно я попробовал Atom. Несмотря на то, что он слишком медленный, мне понравилось одно: как работает автоотступ, в общем-то, везде.

я нашелздеськак сделать Paste + Indent the defaultвозвышенный текст.

Но мне бы также хотелось, чтобы:

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

и все должно быть готово. Однако есть пара оговорок. Эти макросы сделают отступ только на один уровень, поэтому вам может понадобиться использовать 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}]
    ],
  },
}

Связанный контент