Я думаю, что вы уже заметили, что необходим какой-то «сервер». Каждый клиент (среда для рабочего стола, оконный менеджер или оконная программа) необходимо поделиться дисплеем со всеми остальными, и они должны иметь возможность отображать вещи, не зная деталей оборудования, или знание того, кто еще использует дисплей. Таким образом, сервер X11 предоставляет слой абстракции и совместного использования, который вы упомянули, предоставляя интерфейс IPC.
X11, вероятно, может быть сделан для проведения по именованным трубам, но есть две большие вещи, которые называются трубы, не могут сделать.
На самом деле, большинство X клиентов разговаривают с сервером, используя «новую и улучшенную» с именованной трубой «новую и улучшенную», называемую розетку Unix домена. Это очень похоже на названную трубу, за исключением того, что она позволяет процессам разговаривать в обоих направлениях, и оно отслеживает, кто сказал, что. Это одинаковые вещи, которые необходимо сделать сеть, и сокеты UNIX-домена используют один и тот же интерфейс программирования, что и сокеты TCP / IP, которые обеспечивают сетевые коммуникации.
Но оттуда можно легко сказать «Что, если я провел сервер на другом хосте, чем клиент?» Просто используйте разъем TCP вместо сокета UNIX и VOILA: протокол удаленного рабочего стола, который предложен Windows RDP в течение десятилетий. SSH
SSH
к четырем различным удаленным хостам и запущению Synaptic
(графический пакет Manager) на каждом из них, и все четыре окна появляются на дисплее моего локального компьютера.
один раз в Visual Block
режим с вашим Выбранные линии Попробуйте это:
:'<,'>s/cron/at/g
VIM имеет поиск и заменить возможности без необходимости вызывать внешнюю команду.
Из командной строки, соблюдайте, что это успешно:
$ echo cron | sed s:cron:at:
at
, но это не:
$ echo cron | sed s:cron:at:c
sed: -e expression #1, char 11: unknown option to `s'
C
не является опцией SED
. Следующее, хотя, будет работать:
:'<,'>! sed s:cron:at:g
Но, конечно, нет необходимости использовать SED
, чтобы делать такие простые замены в VIM. Кроме того, если вы хотите C
(Подтвердите), используйте встроенный подстановку VIM: c
C
:'<,'>s/cron/at/gc
Похоже, вам вообще не нужно использовать sed или замену. Просто используйте команду change ( c
).Из документации:
Изменение визуального блока * v_b_c * Весь выделенный текст в блоке будет заменен такой же текстовой строкой. Когда использует "c", выделенный текст удаляется и запускается режим вставки. Затем вы можете ввести текст (без разрыва строки). Когда вы нажимаете
, та же строка вставляется во все ранее выбранные строки.
Ключ здесь: "Когда вы нажимаете
, одна и та же строка вставляется во все ранее выбранные строки. " Итак,все, что вам нужно сделать, это заблокировать, выбрать текст cron
, нажать c , ввести в
, выйти из режима вставки, и вы получите желаемый результат замены каждого cron
в блоке с в
.
Если вы действительно хотите запустить команду замены в блоке, я бы вырезал и вставил блок в несколько пустых строк, запустил вашу замену в этих строках, а затем вырезал и вставил полученный блок обратно в исходное место.
Проблема с командой, указанной в вашем вопросе, заключается в том, что вы пытаетесь использовать внешний sed
, а команда s
в sed
не работает. принять флаг c
.