Замена Vim в визуальном режиме

Я думаю, что вы уже заметили, что необходим какой-то «сервер». Каждый клиент (среда для рабочего стола, оконный менеджер или оконная программа) необходимо поделиться дисплеем со всеми остальными, и они должны иметь возможность отображать вещи, не зная деталей оборудования, или знание того, кто еще использует дисплей. Таким образом, сервер X11 предоставляет слой абстракции и совместного использования, который вы упомянули, предоставляя интерфейс IPC.

X11, вероятно, может быть сделан для проведения по именованным трубам, но есть две большие вещи, которые называются трубы, не могут сделать.

  • названные трубы общаются только в одном направлении.
  • Если два процесса начинают начать данные в «отправку» конце с именованной трубы, данные будут проходить в смешенные.

На самом деле, большинство X клиентов разговаривают с сервером, используя «новую и улучшенную» с именованной трубой «новую и улучшенную», называемую розетку Unix домена. Это очень похоже на названную трубу, за исключением того, что она позволяет процессам разговаривать в обоих направлениях, и оно отслеживает, кто сказал, что. Это одинаковые вещи, которые необходимо сделать сеть, и сокеты UNIX-домена используют один и тот же интерфейс программирования, что и сокеты TCP / IP, которые обеспечивают сетевые коммуникации.

Но оттуда можно легко сказать «Что, если я провел сервер на другом хосте, чем клиент?» Просто используйте разъем TCP вместо сокета UNIX и VOILA: протокол удаленного рабочего стола, который предложен Windows RDP в течение десятилетий. SSH SSH к четырем различным удаленным хостам и запущению Synaptic (графический пакет Manager) на каждом из них, и все четыре окна появляются на дисплее моего локального компьютера.

0
07.05.2015, 02:06
3 ответа

один раз в Visual Block режим с вашим Выбранные линии Попробуйте это:

:'<,'>s/cron/at/g

VIM имеет поиск и заменить возможности без необходимости вызывать внешнюю команду.

3
28.01.2020, 02:15

Из командной строки, соблюдайте, что это успешно:

$ 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 c C (Подтвердите), используйте встроенный подстановку VIM:

:'<,'>s/cron/at/gc
2
28.01.2020, 02:15

Похоже, вам вообще не нужно использовать sed или замену. Просто используйте команду change ( c ).Из документации:

 Изменение визуального блока * v_b_c * 
Весь выделенный текст в блоке будет заменен такой же текстовой строкой. Когда 
использует "c", выделенный текст удаляется и запускается режим вставки. Затем вы можете 
ввести текст (без разрыва строки). Когда вы нажимаете , та же строка 
вставляется во все ранее выбранные строки. 
 

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

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

Проблема с командой, указанной в вашем вопросе, заключается в том, что вы пытаетесь использовать внешний sed , а команда s в sed не работает. принять флаг c .

1
28.01.2020, 02:15

Теги

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