Визуальная студия CTRL + SHIFT + T транспонирует - что она делает? - PullRequest
16 голосов
/ 05 апреля 2011

Я написал некоторый код и попробовал Ctrl + T , чтобы проверить функцию транспонирования в visual studio.

Просто чтобы проверить, если CTRL + Shift + T делает обратное для этой транспонирования ... Я пытался нажать Ctrl + Сдвиг + Т . и это все испортило ...

Может кто-нибудь сказать мне, что именно делает Ctrl + Shift + T (особенно с блоком)?

Например:

public string returnDateTimeToMyformat(DateTime dt)
{
    dt = dt.AddYears(-1);
    return dt.ToString("yyyy MM dd HH mm ss");
}

Кому:

string returnDateTimeToMyformat publicdtDateTime (dt
{
    dt = )1AddYears(-.return;
    dt ).ToString("yyyy MM dd HH mm ss");
}

(я начал с курсора сразу после 'public')

Ответы [ 3 ]

18 голосов
/ 05 апреля 2011

Так как CTRL-T меняет местами два символа по обе стороны от курсора, противоположность этому ...

дождитесь его ...

CTRL-T

: -)

CTRL SHIFT T транспонирует два слова после курсора.

То, что он делает с вашим блоком , выглядит довольно странно.Похоже, это делается для нескольких частей каждой строки.Мой единственный совет (как доктор сказал пациенту, который жаловался на боль при ударе головой о стену): не делай этого.

7 голосов
/ 14 ноября 2011

Как уже отмечали другие, два слова, следующие за курсором, транспонируются, и курсор помещается после слов, которые были транспонированы.Однако Visual Studio 2010, по крайней мере, игнорирует запятые и другие знаки пунктуации при рассмотрении слов.Одна из полезностей этого в том, что вы можете изменить порядок, например, enum.Например,

typedef enum myEnum
{
  ThingOne,
  ThingThree,
  ThingTwo
};

Поместите курсор где-нибудь рядом с ThingThree и нажмите Ctrl Shift T , чтобы получить:

typedef enum myEnum
{
  ThingOne,
  ThingTwo,
  ThingThree
};

Это может быть хорошо, если вы решите, что другой порядок для ваших перечислений лучше.Вы также можете использовать это для упрощения сравнения и / или быстрого и простого форматирования их в соответствии с лучшим стандартом кодирования.

if ( ptr == NULL ) { /* stuff */ }

считается плохим (не говоря уже о том, что «если» на отдельной строке)также плохо), поскольку вы можете легко написать (или прочитать) «ptr = NULL» случайно.Вам лучше с

if ( NULL == ptr ) { /* stuff */ }

Итак, если вы сделали это неправильно в первый раз, просто выберите оскорбительное выражение и ... Ctrl Shift T на помощь!

... Да, хорошо, так что эта вещь не так уж полезна.

Редактировать: Хм, я должен добавить, что поведениенемного страннее, когда курсор помещается непосредственно перед символом пунктуации (например, левой скобкой), поэтому странный результат, который вы получили, нажимая Ctrl Shift T в вашем фрагменте кода.Кажется, он просто меняет любую строку с пробелом после курсора на следующее алфавитно-цифровое «слово», пропуская любые знаки препинания между ними.Однако результат часто трудно прочитать, поэтому я не собираюсь утверждать, что это точный образец.

2 голосов
/ 05 апреля 2011

Согласно этому сайту:

Транспонирует два слова, которые следуют курсор (Например, | End Sub будет изменен на чтение Sub End |.)

Единственный вопрос, который остается, вероятно: почему? Ну, это может пригодиться, когда у вас есть блок строк кода, где переменным присваиваются значения. (Например, Load / Save) В противоположной функции вы хотите выполнить противоположное назначение, возможно, этот ярлык можно использовать в такой ситуации ...

...