То, что Вы спрашиваете, является терминалом бесконечной ширины, часть которой отображается. Это не, как традиционно работают терминалы, ни как приложения ожидают, что они будут работать.
Например, если терминал имеет бесконечную ширину, как визуальные приложения предназначены для работы, когда они хотят отобразить что-то посреди экрана?
Что-то приближающееся к этому, которое можно сделать, хотя использование GNU screen
(Вы, как предполагается, можете присоединить экранную сессию от нескольких терминалов различных размеров, таким образом, экран знает, как отобразить маленькое окно более крупного терминала), и установите screen
ширина окон к чему-то очень большому и затем обманывает визуальные приложения в размышление, что экран width является исходным.
Как (в screen
)
c=$COLUMNS # assuming your shell has that variable
screen -X width -w 1000
stty cols "$c"
Некоторые визуальные приложения будут хорошо работать, некоторые не так хорошо (для установки, когда они сделают относительное расположение или когда они полагаются на обертывание терминала). vim
кажется, работает хорошо.
Затем, чтобы прокрутить и скопировать данные вставки, единственная опция состоит в том, чтобы использовать screen
режим копии. (
) и переместите курсор (см. info -f screen -n Movement
для того, чтобы переместиться в режиме копии).
tmux
может иметь подобные возможности.
Это terminator
эмулятор терминала (базирующийся Java), который не является terminator
это идет с человечностью, также делает просто что с бесконечной терминальной шириной:
screen
основанное решение выше в той его terminfo записи утверждает, что не делает, строка переносится так, приложения знают об этом, и БАКАЛАВР НАУК в начале строки не перемещается в конец предыдущей строки. Нет, вы не можете. Bash
и большинство других снарядов (кроме ZSH
) Не позволяйте вложенную замену.
С ZSH
, вы можете сделать вложенный замену :
$ echo ${$(echo 123)/123/456}
456
Если вы не хотите создавать переменную AA, то есть и другие способы выполнения строковых замещений:
$ echo $(xclip -o -selection clipboard | sed 's/copi/knott/')
Here's a string I just knotted.
Да, вы можете сделать это - вид. Это действительно не красиво. Это больше похоже на встроен , чем вложенные. Проблема в том, что вы должны работать по значению параметра, который вы расширяете - если этот параметр не имеет значения, вы не будете делать много. Итак, вы можете назначить значение , а расширяется его, и вряд ли ярлык.
v=; echo "${v:=${0##*["$0${v:=$(xsel -bo)}"]}${v/copi/knott}}"
Я использую $ 0
расширение параметра в цепочке в Скрыть Назначение. Он присваивает значение VAR в расширении вложенного назначения. Внешний приоритет имеет приоритет - но потому что она просто расширится к тому, что все, что все трудно сказать. Однако, если мы закроем внутреннее расширение, затем измените его, вы можете получить то, что вы хотите. После копирования вашей строки в буфер обмена (у меня нет xClip
- просто xsel
) Это печатает:
Here's a string I just knotted.
Это немного понятно, что происходит, если Выходите $ 0
out 0
, хотя:
v=; echo "${v:=${v:=$(xsel -bo)}${v/copi/knott}}"
, что печатается:
Here's a string I just copied. Here's a string I just knotted.
... потому что внутреннее задание происходит до модификации, но, как отмечено, внешнее задание имеет приоритет - и он расширяется как к обоим Расширение внутреннего назначения и к модифицированному внутреннему расширению.
Конечно, никто из этого работает вообще, если целевой параметр уже назначен - так что вы можете сделать только это, если вы опустошите переменную в первую очередь ... что, честно говоря, вероятно, Самое удобное время, чтобы назначить его в конце концов.