Вы можете сделать это с помощью макроса, как вы хотели в своем ответе.Вам понадобится расширение макроса: multiCommand .
В ваших настройках:
"multiCommand.commands": [
{
"command": "multiCommand.removeEmptyLines",
// "interval": 50,
"sequence": [
{
"command": "type",
"args": {
"text": "^\\n"
}
},
"cursorHomeSelect",
"editor.action.clipboardCutAction",
"editor.action.startFindReplaceAction",
"editor.action.clipboardPasteAction",
// focus to the replace input
"editor.action.startFindReplaceAction",
// clear the replace input, if any
"editor.action.clipboardCutAction",
"editor.action.replaceAll"
]
}
]
Это сложно, потому что вы не можете напрямую писать в виджет поиска (даже сболее длительный интервал задержки).Но вы можете распечатать то, что хотите найти, «^\\n
», выбрать его, вырезать и открыть виджет поиска, и он автоматически заполнит поле поиска содержимым буфера обмена.[Обратите внимание, что здесь требуется дополнительный escape "^ \ n".]
Затем есть еще несколько команд, чтобы очистить любой ранее существующий текст замены, который вы можете иметь в поле ввода замены.
Также, как вы знаете, у вас должна быть включена опция "Use Regular Expression
".К сожалению, это переключатель , команды для простого включения не существует.Таким образом, приведенный выше макрос не может вызвать команду переключения - если она уже была включена, она отключится и поиск не будет работать.Таким образом, этот макрос должен предполагать, что у вас уже включена опция "Use Regular Expression
".Я всегда оставляю его включенным и почти никогда не нахожу, что мне нужно временно его отключить.
В вашем keybindings.json установите желаемое связывание клавиш:
{
"key": "ctrl+alt+u",
"command": "multiCommand.removeEmptyLines",
},
и затем вызовите егосвязывание клавиш на любой открытой строке, и он запустит макрос - удалит все открытые строки в файле (кроме любой пустой строки в самом конце файла, потому что в его конце нет \ n).