Есть ли способ исправить многострочный отступ в Sublime Text 3, чтобы он добавлял символы отступа для первой строки внутри выделения?
Когда я выделяю несколько строк в Sublime Text 3 и делаю отступ в виде блока (используя Tab или Ctrl + ]), он добавляет новые пробельные символы в начале первой строки вне выделения, а не внутри.
Скажем, у меня есть блок кода, который выглядит следующим образом (Примечание: все нижеприведенное приведено только для иллюстрации идеи; пожалуйста, не начинайте с меня о том, где мои скобки, или какой отступ я делаю и т. Д.)
int firstVar, secondVar;
firstVar = 4;
secondVar = 11;
Теперь я вернусь к этому коду позже и мне нужно сделать условные присвоения значений:
int firstVar, secondVar;
int myVar = 0;
int result = someThing(myVar);
if (result == GOOD_RESULT)
{
firstVar = 4;
secondVar = 11;
}
else
{
}
Конечно, я хочу сделать отступ, поэтому я выбираю два элемента в if
и добавьте отступ в виде блока, с клавишей Tab и Sublime Text, как и ожидалось, добавьте символы отступа (табуляция или заранее определенное количество пробелов) к каждой выбранной строке:
[snip]
if (result == GOOD_RESULT)
{
firstVar = 4;
secondVar = 11;
}
else
{
}
Тогда, потому что я просто собираюсь назначить им различные значения в else
пункт, я копирую и вставляю их туда, готов внести изменения:
if (result == BAD_RESULT)
{
firstVar = 4;
secondVar = 11;
}
else
{
firstVar = 4;
secondVar = 11;
}
И есть проблема: Sublime Text отступил в первой строке моего блока, но не включил символы отступа в выделение, поэтому, когда я его копировал и вставлял, я не получал отступ в первой строке. (Я хотел бы изменить цвет фона, чтобы проиллюстрировать лучше.)
Мало того, но если бы я вместо этого вырезал и вставил, отступающие символы остались бы позади.
Я могу немного обойти это, пытаясь вспомнить, чтобы скопировать / вырезать перед выполнением отступа, но а) я не всегда помню и б) затем мне нужно сделать отступ в коде дважды.
Кто-нибудь знает, как это исправить?
2 ответа
На Sublime 3 есть эта команда Paste and Indent
и клавиатурная команда для этого Super + shift + V
где Super
является основным ключом команды для вашей ОС. Это, кажется, делает трюк.
Я нашел это здесь: https://gist.github.com/eteanga/1736542
Редактировать: Оригинальный постер с дополнительной информацией, поэтому людям не нужно пытаться анализировать комментарии.
Возвращаясь ко второму шагу исходной задачи:
int firstVar, secondVar;
int myVar = 0;
int result = someThing(myVar);
if (result == GOOD_RESULT)
{
firstVar = 4;
secondVar = 11;
}
else
{
}
Я выбираю две строки между первым набором фигурных скобок (назначения firstVar
а также secondVar
скопируйте их (Ctrl + C), затем добавьте пустую строку между вторым набором фигурных скобок и поместите мой курсор в начало пустой строки (обозначенной |
ниже):
int firstVar, secondVar;
int myVar = 0;
int result = someThing(myVar);
if (result == GOOD_RESULT)
{
firstVar = 4;
secondVar = 11;
}
else
{
|
}
Затем я вставляю и делаю отступ (Ctrl + Shift + V), и код вставляется с отступом по умолчанию для типа файла, готового для изменения. (Кроме того, если бы я вставил больше строк с разными уровнями отступа, все они были бы соответственно скорректированы.)
int firstVar, secondVar;
int myVar = 0;
int result = someThing(myVar);
if (result == GOOD_RESULT)
{
firstVar = 4;
secondVar = 11;
}
else
{
firstVar = 4;
secondVar = 11;
|
}
К сожалению, он также оставил лишнюю пустую строку (потому что, если бы я не добавил лишнюю строку, она бы вообще не имела отступа), но это достаточно легко удалить.
(Так что, к сожалению, это все же не так хорошо, как корректно работать многострочный отступ, так как мне нужно сначала создать, а затем уничтожить пустую строку. Вы говорите, всего два дополнительных нажатия клавиш? Конечно, но это два нажатия клавиш. не нужно делать, если многострочный отступ работает правильно, и это прерывает мой естественный поток, поэтому я должен думать об этом, а не об изменениях кода, которые я пытаюсь внести.
(В качестве альтернативы, я могу отменить выбор символа новой строки в конце последней строки, нажав ←, продолжая удерживать нажатой клавишу Shift, и тогда мне нужно только создать новую строку, но не удалять ее после вставки. Но это даже менее естественная вещь, которую нужно сделать или подумать, чем добавление, удаление и лишняя пустая строка, и она все еще включает в себя два дополнительных нажатия клавиш.
(Так или иначе, эта функция - обходной путь, а не исправление, даже если это интересная, даже крутая функция.)
Однако в ситуациях, когда у вас уже есть строки текста между фигурными скобками (и вам не нужно вставлять новый код непосредственно перед последней фигурной скобкой), это работает довольно хорошо: вам не нужно добавлять пустую строку, просто поместите курсор в начало строки, в которую вы хотите вставить новый код, и нажмите Ctrl + Shift + V. Линии будут вставлены с отступом, который соответствует его окружению.
Кроме того, вам не обязательно использовать отступ по умолчанию. Если вы поместите курсор на произвольный столбец (с пробелом слева от него), команда "Вставить и отступ" будет делать отступ для всего, что вы вставляете в этот столбец. (Если вы сделаете это в строке с текстом справа от курсора, отступ этой строки будет изменен в соответствии с тем, что вы вставили.)
Как я уже сказал, интересная и довольно классная функция, с которой стоит поиграть и узнать наверняка. И стоит быть принятым ответом на этот вопрос. Но все же не так хорошо, как то, чтобы заставить многострочный отступ работать правильно.:)
Я считаю, что это не ошибка, а нормальное поведение, поэтому я не могу исправить. Вместо этого у меня есть объяснение и предлагаемый вариант использования.
Это происходит потому, что вы не копируете отступ.
Ты делаешь это:
Вам также нужно будет выбрать это место перед копированием. Это можно легко сделать двумя способами: