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

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

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

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

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

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


person Tiago    schedule 22.01.2017    source источник
comment
а) не копируйте пробелы первой строки из исходного кода или б) при вставке убедитесь, что ваш курсор находится в начале строки. По сути, VSC просто вставляет его туда как есть.   -  person newBee    schedule 22.01.2017
comment
Так нет возможности изменить это в настройках?   -  person Tiago    schedule 22.01.2017
comment
Выделение текста и перемещение его с помощью ALT + Arrowkey сохранит отступ. Для тех, кто ищет альтернативу изменению настроек.   -  person Daniel Thompson    schedule 01.12.2017


Ответы (5)


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

person andy    schedule 27.07.2017
comment
К сожалению, это также форматирует любой вставленный код, а это не всегда то, что вам нужно. - person philraj; 29.03.2018
comment
Нет, это не то же самое. Существует долгоживущая проблема github.com/Microsoft/vscode/issues/6392 , который закрыт, но фактически не решен, см. комментарии. Все, что нам нужно, - это просто сохранить / сопоставить уровень отступа целевой / целевой строки, а не начальный уровень, с которого был скопирован текст, в то время как "editor.formatOnPaste": true выполняет форматирование, например. PEP8 для питона. - person ololobus; 09.11.2018
comment
Что ж, это работает так, как я хочу. Я хочу, чтобы он прошел мимо раздела, который я скопировал туда, где находится курсор, когда я вставляю - person Dave Pile; 13.04.2019
comment
Это очень популярно и добавляет в код другие нежелательные модификации (или улучшения). - person dan674; 19.11.2019
comment
Я не хочу менять формат своего текста при вставке. Я хочу, чтобы он вставлял именно то, что я скопировал. Если я скопирую неправильно, это моя вина. Это похоже на неправильный ответ. Хотя, кажется, хорошо принят, поэтому я хочу попробовать :) - person NZ Dev; 27.11.2019
comment
Каждый текстовый редактор, кроме VSCode, позволяет пользователю трижды щелкнуть и выделить любой текст. CTRL C для копирования, а затем CTRL V, CTRL V для дублирования скопированного текста. За исключением VS Code, тройной щелчок CTRL C CTRL V корректирует текст, а второй CTRL V делает его еще хуже. CTRL C CTRL V - наиболее распространенное сочетание клавиш, даже моя мама знает это. - person NZ Dev; 27.11.2019
comment
Это не является самоуверенным, поскольку я согласен с остальной частью вашего утверждения. КОПИРОВАНИЕ и ВСТАВКА НЕ ДОЛЖНЫ ИМЕТЬ заключения, это КОПИРОВАНИЕ и ВСТАВКА, они должны работать только в одном направлении. - person NZ Dev; 27.11.2019
comment
Нет, это, по крайней мере, не работает для Python (отступ имеет значение) - person Cornelius Roemer; 24.05.2020
comment
Я согласен с @philraj - person Jonjie; 12.05.2021

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

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

Вам просто нужно изменить ярлык, и он работает. Помните, что вы, вероятно, захотите использовать '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"
}
person hallow_me    schedule 12.02.2017
comment
Используйте это, чтобы воссоздать поведение Sublime Text 3, т.е. cmd + shift + v для вставки отступа: { "key": "cmd+shift+v", "command": "pasteAndIndent.action", "when": "editorTextFocus && !editorReadonly" } - person phocks; 14.05.2017
comment
Это решение все еще работает. Больше никаких неприятных дополнительных вкладок по сравнению с кодом, который нравится вставлять каждый раз, когда я копирую / вставляю. - person Luminous; 19.11.2018
comment
Нашел, зайдите в «Сочетания клавиш» и затем щелкните значок «Открыть горячие клавиши JSON» в правом верхнем углу экрана, думаю, его трудно найти! - person Matt Fletcher; 21.08.2019
comment
У этого расширения есть большой недостаток: при вставке он форматирует весь код файла, а не только вставляемый фрагмент! Пришлось удалить. - person sdlins; 10.01.2020
comment
Чтобы найти keybindings.json, в который вам нужно добавить фрагмент JSON: Поиск предпочтений: откройте сочетания клавиш (JSON) в палитре команд - person Cornelius Roemer; 24.05.2020

Ctrl + V, за которым следует Ctrl + Z, похоже, работает из коробки.

person Philippe    schedule 09.01.2020
comment
Это на удивление работает. Довольно неприятно делать это, но это лучше, чем ничего - person Nate Beers; 28.01.2020
comment
Вы пробовали Cmd + V и Cmd + Z? - person Philippe; 26.05.2020
comment
оставьте это так, чтобы продукт Microsoft не мог обрабатывать возможность копирования и вставки ... Боже, так счастлив, что я использую ноутбук с Linux ... спасибо, этот обходной путь работает - person Scott Stensland; 17.08.2020

Попробуйте мое расширение paste-indent. Контент вставляется в соответствии с отступом текущей строки и выравнивается по левому краю.

person Les Grieve    schedule 04.05.2021

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

person vikrant gupta    schedule 22.10.2019
comment
Это не работает, точно так же. Попробуйте так: выделить абзац - CTRL C, CTRL + SHFT + V, CTRL + SHFT + V. Это становится некрасиво !!!! - person NZ Dev; 27.11.2019
comment
Пробовать звучит странно. Что именно это делает? Что, если пользователь изменил ярлыки? - person Nico Haase; 25.05.2020