Параметры для копирования вставки с правильным отступом в 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"
}

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

«Попробовать» звучит странно. Что именно это делает? Что, если пользователь изменил ярлыки?
Нико Хаасе
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.