Как я могу применить символы возврата в vim? - PullRequest
0 голосов
/ 21 мая 2018

В моем скрипте я печатаю символы возврата на задний план, чтобы реализовать некоторый пользовательский интерфейс в консоли, как это описано здесь .

Это работает хорошо, но теперь я хочу сохранить выходные данные в моемфайл журнала (через перенаправление stdout).Когда я читаю этот файл с помощью инструментов командной строки, таких как tail или less, я получаю final 'output view' моего скрипта (т.е. в этом случае завершенную строку прогресса), и это поведениедля меня предпочтительнее.Но если я открою файл журнала с помощью vim, он покажет все записанные символы в файл с просто экранированием от обратной косой черты как ^H.

Как я могу настроить мой vim таким же образом, чтобы отображать мой файл журналаless или tail здесь?


Вот пример.

1) Скрипт python:

import sys
import time

for i in range(10):
    if i: sys.stdout.write(chr(8) * 10)
    sys.stdout.write(str(i) * 10)
    sys.stdout.flush()
    time.sleep(0.5)
sys.stdout.write('\n')
sys.stdout.flush()

2) Запуск скрипта:python program.py > out.txt

3) Вывод cat out.txt:

$ cat out.txt 
9999999999

4) Отображение содержимого моего vim out.txt:

0000000000^H^H^H^H^H^H^H^H^H^H1111111111^H^H^H^H^H^H^H^H^H^H2222222222^H^H^H^H^H^H^H^H^H^H3333333333^H^H^H^H^H^H^H^H^H^H4444444444^H^H^H^H^H^H^H^H^H^H5555555555^H^H^H^H^H^H^H^H^H^H6666666666^H^H^H^H^H^H^H^H^H^H7777777777^H^H^H^H^H^H^H^H^H^H8888888888^H^H^H^H^H^H^H^H^H^H9999999999

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Вы можете отфильтровать возвраты и посмотреть результат в vim:

cat out.txt | col -b | vim -
0 голосов
/ 22 мая 2018

Вы можете использовать следующую команду для замены специальной клавиши ^H (см. :help i_BS) на пробелы:

:g/\b/while getline('.') =~ '[^\b]\b' | s/[^\b]\b//g | endwhile

Пример ввода:

0000000000^H^H^H^H^H^H^H^H^H^H1111111111^H^H^H^H^H^H^H^H^H^H2222222222^H^H^H^H^H^H^H^H^H^H3333333333^H^H^H^H^H^H^H^H^H^H4444444444^H^H^H^H^H^H^H^H^H^H5555555555^H^H^H^H^H^H^H^H^H^H6666666666^H^H^H^H^H^H^H^H^H^H7777777777^H^H^H^H^H^H^H^H^H^H8888888888^H^H^H^H^H^H^H^H^H^H9999999999

Вывод:

9999999999
0 голосов
/ 22 мая 2018

Эта команда:

$ file out.txt

показывает:

out.txt: ASCII text, with overstriking

Эта команда:

$ cat -v out.txt

показывает (добавлена ​​жесткая упаковка для удобства чтения):

0000000000^H^H^H^H^H^H^H^H^H^H1111111111^H^H^H^H^H^H^H^H^H^H
2222222222^H^H^H^H^H^H^H^H^H^H3333333333^H^H^H^H^H^H^H^H^H^H
4444444444^H^H^H^H^H^H^H^H^H^H5555555555^H^H^H^H^H^H^H^H^H^H
6666666666^H^H^H^H^H^H^H^H^H^H7777777777^H^H^H^H^H^H^H^H^H^H
8888888888^H^H^H^H^H^H^H^H^H^H9999999999

И эта команда:

$ xxd out.txt

показывает:

00000000: 3030 3030 3030 3030 3030 0808 0808 0808  0000000000......
00000010: 0808 0808 3131 3131 3131 3131 3131 0808  ....1111111111..
00000020: 0808 0808 0808 0808 3232 3232 3232 3232  ........22222222
00000030: 3232 0808 0808 0808 0808 0808 3333 3333  22..........3333
00000040: 3333 3333 3333 0808 0808 0808 0808 0808  333333..........
00000050: 3434 3434 3434 3434 3434 0808 0808 0808  4444444444......
00000060: 0808 0808 3535 3535 3535 3535 3535 0808  ....5555555555..
00000070: 0808 0808 0808 0808 3636 3636 3636 3636  ........66666666
00000080: 3636 0808 0808 0808 0808 0808 3737 3737  66..........7777
00000090: 3737 3737 3737 0808 0808 0808 0808 0808  777777..........
000000a0: 3838 3838 3838 3838 3838 0808 0808 0808  8888888888......
000000b0: 0808 0808 3939 3939 3939 3939 3939 0a    ....9999999999.

Итак ... backspace (^H) и предыдущие строки все они на самом деле являются частью файла, и Vim, будучи текстовым редактором, показывает его фактическое содержание.

Как и ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...