Сохранить интервал на отступе или выходе с табуляцией в VSCode

В VSCode, когда у меня есть:

    /*
     * Comment
     */

Если я выберу его и нажму вкладку, я получу:

        /*
        * Comment
        */

Если бы вместо этого я нажал Shift-Tab, я получил:

/*
    * Comment
    */

То же самое происходит с Ctrl-] и Ctrl-[ (если они должны иметь значение)

Я надеялся, что отключение autoIndent остановит это, но никаких кубиков. Я также отключил форматирование C ++ в конфигурации JSON:

{
    "editor.autoIndent": false,
    "editor.detectIndentation": false,
    "C_Cpp.formatting": "Disabled"
}

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

editor.autoIndent: false должен делать то, что я хочу, и просто сломался?

ОБНОВЛЕНИЕ: я также поднял эту проблему как на VSCode GitHub < / а>


person HostileFork says dont trust SE    schedule 15.11.2018    source источник
comment
Помогает ли stackoverflow.com/a/29972553/1023911?   -  person Werner Henze    schedule 17.11.2018
comment
@WernerHenze Параметр "editor.detectIndentation": false по-прежнему приводит к тому, что клавиша табуляции разрушает интервалы в материале с отступом или отступом ... но заполняет левую часть символами табуляции вместо пробелов (мне нужны пробелы, но точка данных, чтобы проверить, не Я использовал вкладки, это не исказило комментарий)   -  person HostileFork says dont trust SE    schedule 17.11.2018
comment
Несмотря на то, что VSCode подхватил это и посчитал это ошибкой, действительно ли я единственный, кто это заметил? Я действительно не поклонник автоматического форматирования при вырезании, вставке, табуляции. Мне кажется, можно верить, что захват вещей из одного места и размещение их в другом месте сохраняет их, и, если вы хотите иначе, необходимо выполнить конкретное переформатирование этой команды.   -  person HostileFork says dont trust SE    schedule 22.11.2018
comment
Кто сказал, что вы единственный, кто видит проблему? Если никто не отвечает, это означает, что никто не знает решения. Кстати, использование .clang-format с ReflowComments: true auto форматирует комментарий, но это также не помогает для отступов. Просто для вашей информации: Visual Studio (не код VS) правильно выполняет отступы, но также не может удалить отступ.   -  person Werner Henze    schedule 22.11.2018
comment
@WernerHenze Я оговорился, я имел в виду, что люди использовали это, и все в порядке, и еще не нашли решения. Никто этого не замечает - может быть, я Mugatu редактирования исходного кода. :-)   -  person HostileFork says dont trust SE    schedule 22.11.2018
comment
Итак, каково ваше ожидаемое поведение? Что вы хотите увидеть, нажав tab или shift-tab (тот же отступ, что и у оригинала, но со смещением вправо или влево)?   -  person Taher Ahmed Ghaleb    schedule 24.11.2018
comment
@TeeKea Если я сдвигаю табуляцию, и она отступает влево, и любой контент располагается на расстоянии меньше, чем уровень отступа, я в порядке с регулировкой интервала так, что он захлопывает все, что не может вытеснить на полную табуляцию ширину влево (вместо того, чтобы в этом случае нельзя было использовать shift-tab). В противном случае я бы хотел просто добавить или вычесть величину отступа в начале каждой строки в выбранной области. Я не возражаю, если это Ctrl- [и Ctrl-], если это необходимо, а табуляция по умолчанию запускает более умную логику табуляции.   -  person HostileFork says dont trust SE    schedule 24.11.2018
comment
Если вы установите размер Tab на 1, он будет выполнять ту же работу, что и расширение, на которое вы ссылаетесь. На моей стороне.   -  person Taher Ahmed Ghaleb    schedule 25.11.2018
comment
@TeeKea Хотя это не то, что я ищу на практике, это хорошее предложение, чтобы добавить его в обсуждение ... и пока единственное предложение. Если вы хотите дать ответ, а льготный период вознаграждения истекает без другого ответа, вы получите несколько баллов за вознаграждение.   -  person HostileFork says dont trust SE    schedule 25.11.2018
comment
Прохладный. Рад, что это немного помогло тебе. Добавлю его как ответ и обновлю, если найду более элегантный способ.   -  person Taher Ahmed Ghaleb    schedule 25.11.2018
comment
@HostileFork Я расширил свой ответ, позволив вам выполнять отступ размером 1 «четыре» раза, когда вы нажимаете CTRL+[ или CTRL+]. Я думаю, это даст вам желаемое поведение. Надеюсь, что вы найдете ее полезной.   -  person Taher Ahmed Ghaleb    schedule 25.11.2018
comment
Отключить настройку Editor: Use Tab Stops помогает. Включите это, чтобы vscode вставлял или удалял пробелы для отступа табуляции.   -  person William Lai    schedule 21.04.2020


Ответы (1)


Если вы установите размер Tab на 1, он будет выполнять ту же работу, что и расширение, на которое вы ссылались.

Вы можете установить размер Tab или Space, щелкнув правый нижний угол:

Изменить размер табуляции / пробела

Щелкните Spaces:4. Затем выберите Отступ с использованием пробелов или Отступ с помощью табуляции и выберите размер 1.

ОБНОВЛЕНИЕ:

Я нашел подход, который полностью удовлетворяет ваши требования (хотя и через расширение). После выбора размера табуляции / пространства 1 установите и загрузите мультикоманду для выполнения отступа с одним пробелом "четыре" раза. Затем перейдите в свой settings.json (Файл> Настройки> Настройки) и добавьте эти две команды:

{
    "macros": {
        "tab4times": [
            "tab",
            "tab",
            "tab",
            "tab"
        ],
        "shifttab4times": [
            "outdent",
            "outdent",
            "outdent",
            "outdent"
        ]
    }    
}

Затем в файле keybindings.json (CTRL + P и затем введите keybindings.json) измените CTRL + ] и CTRL + [ ключи для выполнения вновь созданных команд:

[
    {
        "key": "ctrl+]",
        "command": "macros.tab4times",
        "when": "editorTextFocus && !editorReadonly"
    },
    { 
        "key": "ctrl+[",
        "command": "macros.shifttab4times",
        "when": "editorTextFocus && !editorReadonly"
    }
]

После сохранения этих конфигураций перейдите к своему тексту. Теперь нажмите CTRL + ] и CTRL + [, чтобы увидеть желаемое поведение отступа и выпад соответственно.

Надеюсь, это поможет.

person Taher Ahmed Ghaleb    schedule 24.11.2018
comment
Спасибо за это! Я сейчас занят другими делами и не могу попробовать, но я предполагаю, что это работает, как описано ... назначая вам награду до того, как закончатся часы. :-) - person HostileFork says dont trust SE; 25.11.2018
comment
Спасибо, @HostileFork. Я очень ценю, что вы поверили моему ответу. У меня это сработало, но, пожалуйста, дайте мне знать, если какой-либо из шагов будет непонятен, пока вы его реализуете. Хороших выходных! - person Taher Ahmed Ghaleb; 25.11.2018