Подтвердить что ты не робот

Как заставить vscode остановить перекрытие закрывающих круглых скобок при вставке

Когда я пытаюсь добавить закрывающие скобки, они всегда переопределяют следующие скобки справа.

Вот снимок экрана (похоже, что я нажал правую клавишу на клавиатуре, но я фактически вставляю новые закрывающие скобки):

enter image description here

Можно ли изменить это поведение?

4b9b3361

Ответ 1

Vscode наконец исправил эту проблему, и вам не нужно ничего делать, чтобы получить новое поведение. Теперь он будет проглатывать только те скобки, которые были добавлены автоматически, так что все работает как положено. Если вы уже отключили параметр autoClosingBrackets в настройках, рекомендуется включить его снова.

Ответ 2

Попробуйте установить:

"editor.autoClosingBrackets": "never"

чтобы полностью отключить функцию автоскользящих скобок.

Ответ 3

Начиная с версии 1.38, ответ да, вы можете полностью отключить его, сохраняя при этом автозавершение скобок.

В этой версии была введена новая настройка editor.autoClosingOvertype, которая может принимать три возможных значения:

  • always - всегда перегружать закрывающие скобки (старое, классическое поведение в стиле Sublime-Text)
  • auto - "умный" overtype, который пытается определить, был ли редактор автоматически вставил закрывающую часть, и переписывает только эти символы (это значение по умолчанию)
  • never - никогда не переписывать закрывающие скобки

Текущее поведение по умолчанию было введено в версии 1.37. В то время не было доступных настроек, вы просто получили "умное" поведение переопределения, несмотря ни на что.

Я оставляю материал ниже для исторических целей.


Нет, это невозможно (пока), и это по замыслу. Когда вы набираете новый код и вводите открывающую скобку, вы автоматически получаете закрывающую скобку (если она включена, конечно). Затем, когда вы закончите вводить то, что хотите внутри этих скобок, как вы собираетесь "выйти" и оставить закрывающую скобку там, где она есть? Самый естественный способ - ввести закрывающую скобку! Некоторые не согласны, но многие машинистки считают, что это намного проще, чем полностью перемещать руку к клавишам со стрелками или мыши, чтобы пройти мимо нее.

Обратите внимание, что это поведение в значительной степени вдохновлено и смоделировано после того, что делает Sublime Text.

Может быть полезно понять, что функция автоматического закрывания скобок предназначена не только для сохранения нажатий клавиш. Скорее, его основная цель - повысить стабильность подсветки синтаксиса (что может стать проблематичным при наличии незакрытой скобки) и, во-вторых, помочь вам не забыть набрать закрывающую скобку. Если вам по какой-то другой причине пришлось уйти, не печатая его, то, поздравляю, вы получите эту скобку бесплатно!

Два самых простых варианта, которые у вас есть, если вы хотите добавить скобку (и позвольте мне заметить, что в вашем примере вы бы добавили несоответствующую скобку), это либо (1) поставить курсор после кластера закрывающих скобок, прежде чем вводить новую скобку или (2) поместите курсор туда, где вы это делали, но продолжайте вводить закрывающие скобки, пока не добавите новую. В любом случае любые новые скобки будут добавлены только в конец кластера.

Обновление (сейчас устарело):

Что бы это ни стоило, теперь на трекере есть проблема для этого, а также запрос на выгрузку для создания настройки, которая позволяет отключить "глотание скобок". Для тех, кто читает это, если это то, что вас интересует, вы должны оставить свой отзыв о запросе извлечения.

Дальнейшее обновление (сейчас устарело):

В настоящее время тестируется новый код, который сделает наложение скобок более сложным. План состоит в том, чтобы редактор отслеживал, какие скобки были автоматически сгенерированы, и печатал только над этими скобками. Как только курсор покидает область в квадратных скобках, редактор перестает отслеживать эти квадратные скобки, и они становятся "полноценными" символами, которые больше не могут быть напечатаны. Надеюсь, это сохранит избыточный тип там, где это полезно, и избавится от него там, где его нет. Обратите внимание, что текущий план предусматривает, чтобы это новое поведение стало стандартным, и чтобы не иметь настройку, позволяющую контролировать его действие.

Ответ 4

Способ работы с исходной настройкой VSCode заключается в добавлении новых скобок в конце списка скобок.

...if (test === funFunction(data))| /* <- here */ {...

Вы должны быть в состоянии ввести новую круглую скобку, и она не переопределит старую. Это не решит вашу проблему, но если вы хотите следовать парадигме, которую использует VSCode, тогда все готово.

(лично я отключаю его, как говорят другие комментарии)