Csi коды c

Обновлено: 02.07.2024

Рис. 1. Пример CSI REPL

Рис. 4. Параметры командной строки csi.exe

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

Как отмечалось, csi.exe позволяет указывать файл «профиля» по умолчанию, который настраивает ваше окно команд.

  • Чтобы очистить консоль CSI, вызовите Console.Clear. (Подумайте насчет директивы using static System.Console для добавления поддержки вызова просто Clear.)
  • Если вы вводите команду, занимающую несколько строк, и обнаруживаете ошибку на одной из предыдущих строк, то можете использовать Ctrl+Z с последующим нажатием Enter для отмены и возврата к пустой строке приглашения без выполнения (заметьте, что в консоли появится ^Z).

Enter Если текущее выражение полное, оно оценивается. В ином случае вставляется новая строка
Ctrl+Enter Оценивается текущее выражение
Shift+Enter Вставка новой строки
Esc Очистка текущего выражения
Alt+стрелка вверх Замена текущего выражения предыдущим
Alt+стрелка вниз Замена текущего выражения последующим (если ранее был переход назад)
Ctrl+Alt+стрелка вверх Замена текущего выражения предыдущим, начинающимся с того же текста
Ctrl+Alt+стрелка вниз Замена текущего выражения последующим, начинающимся с того же текста (если ранее был переход назад)
Стрелка вверх В конце текущего выражения его замена предыдущим. В ином случае перемещение курсора на строку вверх
Стрелка вниз В конце текущего выражения его замена последующим (если ранее был переход назад). В ином случае перемещение курсора на строку вниз
Ctrl+K, Ctrl+Enter Вставка выделенного блока в конец интерактивного буфера; «каретка» остается в в конце ввода
Ctrl+E, Ctrl+Enter Вставка и выполнение выделенного блока до любого незавершенного ввода в интерактивном буфере
Ctrl+A При первом нажатии выделяет выражение, в котором находится курсор. При втором нажатии выделяет весь текст в окне

Важно отметить, что Alt+стрелка вверх/вниз — это комбинации клавиш для вызова журнала команд. Microsoft выбрала эти комбинации вместо более простых «стрелка вверх/вниз», поскольку хотела, чтобы окно Interactive работало так же, как и стандартное окно кода в Visual Studio.

Более того, файл CSharpInteractive.rsp ссылается на файл C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\PrivateAssemblies\SeedUsings.csx по умолчанию:

Комбинация этих двух файлов является причиной того, что вы используете Console.WriteLine и Environment.CurrentDirectory вместо полных System.Console.WriteLine и System.Environment.CurrentDirectory соответственно. Кроме того, ссылки на сборки, такие как Microsoft.CSharp, позволяют использовать языковые средства вроде dynamic безо всяких дополнительных усилий. (Модификация этих файлов дает возможность изменять ваш «профиль» или «предпочтения» так, чтобы эти изменения сохранялись между сеансами.)

Важно отметить, что вы можете объявлять одну и ту же конструкцию (переменную, класс, функцию и т. д.) снова и снова. Последнее объявление следует любому более раннему объявлению.

Другой важный момент, о котором нужно знать, — поведение точки с запятой, завершающей команду. Операторы (например, присваивания переменных) требуют точки с запятой. Без нее REPL-окно будет по-прежнему предлагать дальнейший ввод (через точку), пока не будет введена точка с запятой. С другой стороны, выражения будут выполняться без точки с запятой. Следовательно, System.Diagnostics.Process.Start("notepad") запустит Notepad даже без концевой точки с запятой. Более того, поскольку вызов метода Start возвращает процесс, в командной строке появится строковый вывод выражения: [System.Diagnostics.Process (Notepad)]. Но закрытие выражения точкой с запятой скроет этот вывод. Поэтому вызов Start с концевой точкой с запятой не даст никакого вывода, хотя Notepad все равно будет запущен. Конечно, Console.WriteLine("It would take a miracle."); будет по-прежнему выводить текст, даже без точки с запятой, поскольку вывод отображает сам метод.

Выражения (expressions) и операторы (statements) иногда имеют тонкие отличия. Например, оператор string text = "There’s a shortage of perfect b…."; не даст никакого вывода, а text="Stop that rhyming and I mean it" вернет присвоенную строку (поскольку присваивание возвращает присвоенное значение и в конце нет точки с запятой, которая подавила бы вывод).

Заключение

Выражаю благодарность за рецензирование статьи экспертам Microsoft Кевину Босту (Kevin Bost) и Кейси Олинхуту (Kasey Uhlenhuth).

В Википедии показан вот такой шаблон csi кодов:

CSI [символ(-ы) режима] n1 ; n2. [замыкающий(-ие) символ(-ы)] буква

Допустим, я хочу установить курсор слева сверху в терминале, тогда я напишу: printf("\x1b[H"); но если я хочу куда-нибудь в центр поместить этот курсор, как мне указать, куда я хочу поместить его?

Как я понял, нужно написать вот так: printf("\x1b22;22[H]"); , но это не работает. Напишите, пожалуйста, нормальный шаблон этих csi кодов, и объясните, что такое символы режима. Буду очень благодарен.

Читайте также: