Задайте длину вкладки в cmd.exe

По умолчанию символы табуляции в cmd записываются как 8 символов. Есть ли способ изменить это на нечто меньшее?

Мы используем вкладки для отступов в нашем коде. Таким образом, diff output от Mercurial (т.е. hg diff ) становится довольно ужасным для чтения.

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

 @echo off setlocal EnableDelayedExpansion for /f "tokens=* delims=" %%a in ('hg diff') do ( set __temp=%%a echo !__temp: = ! ) endlocal 

EnableDelayedExpansion позволил использовать ! S и модификация переменных в цикле for .


Кажется, что вставка кода в этот ответ заменила вкладку на три пробела. Когда вы копируете это в пакетный файл, убедитесь, что есть фактический символ табуляции между : и = в echo строке.


Если у вас есть одиночные кавычки в команде, которую вам нужно запустить (я действительно не знаю полного синтаксиса hg diff ), тогда вы должны окружить ее usebackq и включить usebackq . Это означает, что вы не можете использовать backquotes в команде, которую нужно запустить. Выбери один.

Backquoted version:

 @echo off setlocal EnableDelayedExpansion for /f "usebackq tokens=* delims=" %%a in (`hg diff`) do ( set __temp=%%a echo !__temp: = ! ) endlocal 

Я не уверен, где эти 8 символов исходят из-за вас, но у меня всегда было 4 символа при вводе любого текстового файла из cmd.exe с использованием TYPE или COPY, может быть, что результат двойной вкладки. В соответствии с традиционной DOS ширина TAB составляет 4 символа, есть много инструментов командной строки, которые полагаются на это, это наиболее вероятная причина, по которой я не могу изменить ее, насколько я знаю (если бы Он был бы где-то в реестре, но я его никогда не видел), если вы не декомпилируете / не перекомпилируете cmd.exe. Мое предложение состоит в том, чтобы написать скрипт или консольный инструмент, который печатает вывод на экран консоли для вас, интерпретируя вкладки, как вы хотите, или найдите такой инструмент, как это уже сделано где-то.

Я понятия не имею, как вы можете делать то, что хотите, но можете:

  1. Изменить размер буфера и ширины окна, чтобы увеличить общее пространство; Буфер Cmd Sreen и размер окна
  2. Перенаправить вывод в файл, затем прочитать файл с помощью текстового редактора, например Notepad ++.

    C: \> hg diff> file.txt

Это не общее решение, но, поскольку вы случайно спросили о «hg diff», и это случилось в моем запросе Google .. 🙂

Таким образом, я решил проблему с вкладками для этого конкретного случая, это использовать less.exe. Фактически, я использовал его, но для этого просто нужен дополнительный параметр. Вот немного моего hgrc (упрощенного):

 [extensions] pager = [pager] attend = annotate, cat, diff, export, glog, help, log, status pager = path\to\less.exe --quit-if-one-screen --raw-control-chars --tabs=4 hg16mode = yes 
  • Команда 7zip не извлекает в указанный выходной каталог
  • Как сделать все файлы неисполняемыми рекурсивно, используя find, не затрагивая каталоги?
  • Linux-top / netstat / etc. На Mac OS X?
  • Выполнение ярлыка из командной строки без расширения .lnk (Windows)
  • Приостановить / возобновить процесс простым способом?
  • Zypper: Как отобразить все пакеты из определенного репозитория?
  • Терминальный эмулятор с разделенными панелями для Windows 7 (64 бит)
  • Windows XP - расширение «Открыть терминал здесь»?
  • Как изменить переменную среды со специальными символами?
  • Что делает комбинирование методов сжатия в 7z?
  • Менеджер загрузки FTP / HTTP в командной строке, поддерживающий несколько соединений
  • Interesting Posts
    Давайте будем гением компьютера.