tmux copy-pipe усекает выделение

Если вы не слишком суетитесь по поводу белого пространства, вы делаете это с двумя правилами неловкости, как это:

 awk '$1 { printf "\n" $0 } !$1 { printf OFS $7 }' FS=, OFS='|' infile

Это оставляет пустую строку во главе вывода, и пропускает один в конце. Чтобы исправить это, добавьте , если и END предложения:

awk '$1 { if(NR>1) printf "\n"; printf $0 } !$1 { printf OFS $7 } END { printf "\n" }' FS=, OFS='|' infile

Output:

ABC,SSSD,12345,NSS,12345,xxx,TS11|TS21|TS22|BS26|GPRS
ABC,SSSD,12356,NSS,12356,xxx,TS11|TS21|TS22|GPRS|BS26

Edit - note about% in $0

Как отметил Гленн в комментариях, если строки содержат % , безопаснее вызвать printf с форматом последовательности, например:

awk '$1 { if(NR>1) printf "\n"; printf "%s", $0 } !$1 { printf OFS"%s", $7 } END { printf "\n" }' FS=, OFS='|' infile

-121--67877-

Если количество объединяемых строк является постоянным, awk может просто решить, какой тип линии это тип, посмотрев на номер строки:

$ awk -F, '1==NR%5 { printf $0 "|";next } { printf $7 (NR%5?"|":"\n") }' DATA
ABC,SSSD,12345,NSS,12345,xxx,TS11|TS21|TS22|BS26|GPRS
ABC,SSSD,12356,NSS,12356,xxx,TS11|TS21|TS22|GPRS|BS26

-121--67878-

Альтернативой для shelr.tv (которая была отличным вариантом, и может в конечном итоге снова оказаться) является showterm , который вы можете самостоятельно разместить или использовать как есть.

Конвертируйте в видео, как вы считаете нужным, но это не прямой ответ на видео.

3
17.02.2018, 09:45
2 ответа

Я начал сталкиваться с той же проблемой, но не знаю, почему. Однако предложенное решение tmux >= 2.5 вhttps://unix.stackexchange.com/a/131187/44909решает проблему для меня. В частности, сделайте так, чтобы ваш .tmux.confимел:

bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard'

Кажется, бит -and-cancelделает это. Если я просто использую copy-pipe, это не сработает.

0
27.01.2020, 21:30

Если для параметра set-clipboardустановлено значение onилиexternal(по умолчанию )и ваш терминал поддерживает OSC 52, тогда copy-pipeтакже отправит скопированные данные на ваш tty, используя escape-последовательность xterm для установки выбор. tmux правильно отправляет весь скопированный текст, но ваш терминал может иметь ограниченный размер буфера -для приема данных. Это упоминается в tmux #1119 .

Иногда это может срабатывать, потому что вызов xclipпомещается в фоновый режим и может завершиться после встроенной операции настройки -в буфере обмена. Кроме того, это могло начать происходить недавно, если вы обновили свой терминал и реализовали поддержку OSC 52 (, например. готовность).

Ваши варианты::

  • Добавьте set-option -g set-clipboard offв конфигурацию tmux
  • установите более высокий предел размера буфера в вашем терминале, если это возможно (или зарегистрируйте проблему )и полностью отключите copy-pipe

ключевые слова :буфер обмена tmux усечен, tmux не копирует все символы, копия tmux усечена

2
27.01.2020, 21:30

Теги

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