Установка вкладки width в C++ производится в ударе

# Find the URL of the .deb file
url=$(wget -O- -q --no-check-certificate https://github.com/elbersb/otr-verwaltung/downloads |
       sed -ne 's/^.*"\([^"]*otrverwaltung_[^"]*_all\.deb\)".*/\1/p')
case $url in
  http://*|https://*) :;;
  /*) url=https://github.com$url;;
  *) url=https://github.com/elbersb/otr-verwaltung/$url;;
esac
# Create a temporary directory
dir=$(mktemp -dt)
cd "$dir"
# Download the .deb file
wget "$url"
# Install the package
sudo dpkg -i "${url##*/}"
# Clean up
rm "${url##*/}"
cd /
rmdir "$dir"
6
26.08.2017, 04:18
4 ответа

Можно изменить позиции табуляции в терминале с помощью терминальной базы данных, которая можно получить доступ к нескольким путям от C++ (например, ncurses). Можно также получить доступ к нему от использования оболочки tput.

Вы хотели бы запуститься путем очистки вкладок (tput tbc). Затем переместите курсор в каждый столбец, в котором Вы хотите позицию табуляции (tput hpa 10 для столбца 10, например). Затем наконец установите позицию табуляции (tput hts). Повторите расположение и установку позиции табуляции для каждой позиции табуляции, которую Вы хотите. Пример:

echo -e '0\t1\t2\t3\t4\t5\t6\t7\t8'
tput tbc
for ((i=0; i<`tput cols`; i+=10)); do
    tput hpa $i
    tput hts
done
tput hpa 0
echo -e '0\t1\t2\t3\t4\t5\t6\t7\t8'
3
27.01.2020, 20:24
  • 1
    Таким образом, я могу поместить что-то как tput tbc tput hpa 10 tput hts tput hpa 20 tput hts ... в мой .bashrc и просто быть счастливым? –  yo' 24.10.2012, 20:46
  • 2
    @tohecz да, можно поместить это в bashrc, но это изменит позиции табуляции каждая оболочка удара, которую Вы имеете. Вы не можете хотеть это для всех своих оболочек. Можно также использовать ncurses, и т.д. в программе, и затем просто иметь его, вступают в силу, когда Вы запускаете свою программу. –  derobert 24.10.2012, 20:48

Так, печатный символ табуляции фиксируется в исходном коде программы. Я не думаю, что дисплей символа табуляции в ударе может быть отредактирован в установке оболочки.

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

Вместо этого имейте Вас, попробовал pr команда?

PR (1) пользователь управляет PR (1)

PR ИМЕНИ - преобразовывает текстовые файлы для печати

Для свопинга символов табуляции для 10 пробелов Вы могли сделать этот:-

./a.out | pr --expand-tabs=10 -t
4
27.01.2020, 20:24
  • 1
    pr нумерует страницы вывод, который осужден. Это может быть отключено? –  yo' 24.10.2012, 20:31
  • 2
    @tohecz -T опция отключает разбиение на страницы –  derobert 24.10.2012, 20:33
  • 3
    -t опция. Обновит ответ... –  Alex Leach 24.10.2012, 20:33
  • 4
    Хорошо, таким образом, это, кажется, помогает, спасибо. Однако имея необходимость передать это по каналу кажется немного странным для меня и означает, что необходимо назвать другим способом произвести его вкладка-seperated в файл и т.д. –  yo' 24.10.2012, 20:38
  • 5
    Ну, Вы могли произвести его в файл однажды, вместе с вкладками, и затем работать pr .. непосредственно на файле с разделением табуляцией. например. ./a.out > output.txt ; pr --expand-tabs=10 -t output.txt –  Alex Leach 24.10.2012, 20:43

C++ не ответственен за ширину. Мне ввели более длительный ответ, но действительно стало ненужным, когда я сделал тест...

В основном использовать tabs (часть ncurses5 пакета)..., например.

zsh> tabs 4 # 4 space width tabs
zsh> ./a.out

Это отформатирует к Вашей ширине, которую Вы хотите автоматически. Никакая потребность передать по каналу (который не помогает, если у Вас есть интерактивная работа).

3
27.01.2020, 20:24
  • 1
    , который я отредактировал, в котором упаковывают tabs команда прибывает из того, в случае, если кому-то не установили ее. Не стесняйтесь возвращаться мое редактирование, если Вы не одобряете. –  derobert 24.10.2012, 22:25
  • 2
    Спасибо @derobert, я не был уверен, как это прибыло, предварительно устанавливает на моем поле CentOS 6, и я не проверял для наблюдения то, что обеспечило его. –  sparticvs 25.10.2012, 01:02

Как показано в других ответах, утилита tabs - это более простой способ указать позиции табуляции для приложений (таких как ваша оболочка), которые не устанавливают свои собственные позиции табуляции. POSIX определяет утилиту tabs (а также tput ), но ничего не говорит о terminfo или поведении tput для этой цели. (X / Open Curses, который является отдельным стандартом, может что-то сказать).

Но чтобы использовать эти позиции табуляции, вы также должны убедиться, что ваш терминал настроен на использование аппаратных вкладок. Если вы выполните stty -a , найдите tab0 в выводе:

speed 38400 baud; rows 40; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

Согласно руководству stty , вы сможете установить tab0 или tab3 . POSIX определяет tab1 и tab2 , но только tab0 (вкладки оборудования) и tab3 (вкладки программного обеспечения) вам пригодятся.

tab0 tab3
Выбор политики расширения вкладок. tab0 отключает раскрытие вкладок, а tab3 включает его.

Дополнительная литература:

0
27.01.2020, 20:24

Теги

Похожие вопросы