Почему экран в macOS не принимает мой ~ / .terminfo?

Копирование и вставка с экрана терминала никогда не будет полностью надежным, потому что оно имеет дело с выводом на экран, а не с исходным исходным материалом. Если некоторые приложения выводят текст на терминал необычным образом, и это приводит к тому, что терминал не может угадать исходный текст, вероятно, вы или терминал мало что можете с этим поделать.

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

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

В качестве эксперимента попробуйте следующее:

  • Используйте less , чтобы просмотреть файл, содержащий очень длинные строки, которые переносятся на несколько терминальных строк.
  • Трижды щелкните одну из этих строк (для выделения всей строки). less выбрал всю логическую строку, которая охватывает несколько физических строк, и если вы вставите ее в другое место, она будет сохранена как одна длинная строка.
  • Нажмите j некоторое количество строк, чтобы часть этой длинной строки исчезла в верхней части экрана.
  • Нажмите k один или несколько раз, чтобы прокрутить всю логическую строку обратно в поле зрения.
  • Еще раз трижды щелкните логическую линию. На этот раз выбрана только одна физическая линия.Это связано с тем, что less перекрашивает физическую линию экрана физической линией, и терминал больше не имеет никакого способа узнать, что физические линии были соединены вместе.
  • Теперь, если бы вы вручную перетащили всю логическую строку и вставили ее в другое место, вы бы обнаружили, что в нее встроены символы новой строки.

YMMV в этом эксперименте, потому что ваш терминал (или версия less ) может быть более или менее умен, чем мой.

Как правило, чем тупее программа, создавшая результат, тем выше ваши шансы скопировать и вставить в точности исходный материал. cat , например, настолько тупой, насколько это возможно. (Вы, конечно, понимаете, что «тупой» - это комплимент!)

Если вы получаете дополнительный пробел в конце строки под tmux , вероятно, это потому, что tmux фактически повторяет этот персонаж. Помните, что tmux выполняет собственную эмуляцию терминала, а затем повторно генерирует новые терминальные последовательности для рендеринга на нижележащий терминал. Возможно, он повторяет этот пробел, потому что считает, что в некоторых случаях может возникнуть необходимость перезаписать какой-либо другой символ, который, по его мнению, может там присутствовать. Какой бы ни была причина, терминал, вероятно, не имеет возможности узнать, что символ пробела на самом деле не является частью исходного содержимого.

2
12.12.2017, 05:36
0 ответов

Теги

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