Параметры для копирования вставки с правильным отступом в Visual Studio Code

96

Когда я копирую и вставляю фрагмент кода с помощью Visual Studio Code, после нажатия клавиши ВВОД для создания новой строки происходит следующее:

введите описание изображения здесь

Кажется, что сохраняется отступ, созданный новой строкой, добавляя поверх нее предыдущую информацию из скопированного фрагмента. Я бы предпочел, чтобы код автоматически улучшался при вставке.

Можно ли изменить это поведение в настройках?

РЕДАКТИРОВАТЬ: я не имею в виду кроссплатформенное копирование, я имею в виду копирование и вставку в один и тот же файл в Visual Studio Code.

Тьяго
источник
а) не копируйте пробелы первой строки из исходного кода или б) при вставке убедитесь, что ваш курсор находится в начале строки. По сути, VSC просто вставляет его туда «как есть».
newBee
Так нет возможности изменить это в настройках?
Tiago
Выделение текста и перемещение его с помощью ALT + Arrowkeyсохранят отступ. Для тех, кто ищет альтернативу изменению настроек.
Дэниел Томпсон

Ответы:

103

Это уже интегрировано в vscode со "editor.formatOnPaste": trueсвойством в настройках.

Энди
источник
12
К сожалению, это также форматирует любой вставленный код, а это не всегда то, что вам нужно.
philraj
2
Нет, это не то же самое. Существует давняя проблема github.com/Microsoft/vscode/issues/6392 , которая закрыта, но фактически не решена, см. Комментарии. Все, что мы хотим, - это просто сохранить / сопоставить уровень отступа целевой / целевой строки, а не начальный уровень, с которого был скопирован текст, при "editor.formatOnPaste": trueвыполнении форматирования, например PEP8 для python.
ololobus
Что ж, это работает так, как я хочу. Я хочу, чтобы он прошел мимо раздела, который я скопировал, куда бы я ни
Дэйв Пайл,
2
Каждый текстовый редактор, кроме VSCode, позволяет пользователю трижды щелкнуть и выделить любой текст. CTRL C для копирования, а затем CTRL V, CTRL V для копирования скопированного текста. За исключением VS Code, тройной щелчок CTRL C CTRL V корректирует текст, а второй CTRL V делает его еще хуже. CTRL C CTRL V - наиболее распространенное сочетание клавиш, даже моя мама знает это.
NZ Dev
3
Это не самоуверенное мнение, поскольку я согласен с остальной частью вашего утверждения. КОПИЯ и ВСТАВКА НЕ ДОЛЖНЫ ИМЕТЬ заключения, это КОПИРОВАНИЕ и ВСТАВКА, они должны работать только в одном направлении.
NZ Dev
41

Этот плагин может помочь вам:

расширение вставки и отступа

Вам просто нужно изменить ярлык, и он работает. Помните, что вы, вероятно, захотите использовать 'cmd'вместо этого, 'ctrl'если у вас Mac. Как это:

{
    "key": "ctrl+v",
    "command": "pasteAndIndent.action",
    "when": "editorTextFocus && !editorReadonly"
},
{
    "key": "ctrl+v",
    "command": "editor.action.clipboardPasteAction",
    "when": "!editorTextFocus"
},
{
    "key": "ctrl+shift+v",
    "command": "editor.action.clipboardPasteAction",
    "when": "editorTextFocus && !editorReadonly"
}
hallow_me
источник
9
Используйте это, чтобы воссоздать поведение Sublime Text 3, т.е. cmd + shift + v для вставки отступа: { "key": "cmd+shift+v", "command": "pasteAndIndent.action", "when": "editorTextFocus && !editorReadonly" }
phocks
Это решение все еще работает. Больше никаких неприятных дополнительных вкладок по сравнению с кодом, который нравится вставлять каждый раз, когда я копирую / вставляю.
Luminous
6
Нашел, зайдите в «Сочетания клавиш», а затем щелкните значок «Открыть горячие клавиши JSON» в правом верхнем углу экрана, думаю, трудно найти!
Мэтт Флетчер
У этого расширения есть большой недостаток: при вставке он форматирует весь код файла, а не только вставляемый фрагмент! Пришлось удалить.
сдлинь
Чтобы найти место, keybindings.jsonкуда вам нужно добавить фрагмент JSON, выполните поиск по запросу «Настройки: открыть сочетания клавиш (JSON) в палитре команд»
Корнелиус Ремер,
14

Ctrl+ с Vпоследующим Ctrl+ Zвроде работает из коробки.

Филипп
источник
2
Это на удивление работает. Довольно неприятно делать это, но это лучше, чем ничего
Нейт Бирс
Вы пробовали Cmd + V и Cmd + Z?
Филипп
оставьте это так, чтобы продукт Microsoft не мог обрабатывать возможность копирования и вставки ... Боже, так счастлив, что я использую ноутбук с Linux ... спасибо, что обходной путь работает
Скотт Стенсленд
-2

Простое исправление - попробовать Ctrl+ Shift+ Vпосле копирования кода. Он правильно вставит все коды с отступами.

Викрант Гупта
источник
Это не работает, точно так же. Попробуйте так: выделить абзац - CTRL C, CTRL + SHFT + V, CTRL + SHFT + V. Это становится некрасиво !!!!
NZ Dev
«Попробовать» звучит странно. Что именно это делает? Что, если пользователь изменил ярлыки?
Нико Хаасе