Воззрения кота Manual’а. CLI и Zsh. Часть 1. Термоконсольное введение

Алексей Федорчук

manul-logo-100Здесь кот Manual изложит свои воззрения на методы работы в командной строке (далее именуемой CLI — Command Line Interface), и на Zsh — лучшую, по его мнению, оболочку для этой цели. Но сначала он вынужден будет остановиться на средах, которые работу в CLI обесчечивают, то есть на виртуальных консолях и эмуляторах терминалов. Уделяя особоен внимание тому, почему командную строку не следует называть консолью, а последнюю путать с терминалом. Ибо, как сказал некогда полковник в ответ на искажение текста отцом Герасимом, назвавшим «сучец — сломицею»:

Это все равно, что если б я отворот назвал погонами.

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

когда подали горячее, не отказался пить за здоровье полковника, причем полковник выпил и за его здоровье. Это повторялось несколько раз…

В наше гуманное время не всегда сажают под арест и да более серьёзнфые непонятки, нежели незнание разницы консоль и Konsole. Тем не менее, и чисто практически различать их бывает не менее полезно, чем отличать кабеля от кобеля, а кобеля от… ну, это все знают.

Что такое консоль

Правда, Сартра путает с сортиром,
А ван Гога путает с Ван Даммом

Основной темой этого Manual’а является CLI, рассматриваемые на примере командной оболочки Zsh. Однако, как и любой интерфейс, CLI существует не сам по себе, а в некоторой окружающей среде. Вкачестве каковой может выступать либо «голая» консоль, либо одна из программ эмуляции терминала.

Консолью настольной персоналки принято называть сочетание монитора и клавиатуры, подсоединённых к одному компьютеру. Так повелось со времён, «когда машины были большими», и об этом можно прочитать в старинном очерке, представляющем нынче в основном исторический интерес. Строго говоря, консоль следует называть виртуальным терминалом, тем более, что в одной системы их бывает несколько. Однако для определённости далее слово «терминал» будет использоваться в другом его значении.

Традиционный режим работы всех консолей (а в большинстве дистрибутивов Linux’а их по умолчанию 6) был текстовым. Разрешение экрана при этом измерялось не в пикселях, указанных в рекламе монитора, а в количестве сиволов в строке и числе строк, выводжимых на дисплей. Например, 80×25 (умолчание всех UNIX’ов), 132×45 и так далее. Символы эти выводятся специальными консольными шрифтами. Все они растровые, размер их задаётся не величиной кегля, а пиксельными матрицами: например, 8×12, 8×14 или 8×16 пикселей. Очевидно, что все они — моноширинные (monospace).

В большинстве современных дистрибутивов Linux’а в консоли по умолчанию включён графический режим через так называемый frame buffer, и потому экранное разрешение задаётся всё-таки в пикселях — например, 1920×1080. Однако шрифты используются те же самые, что и для текстовой консоли, и потому размер их определяется матрицей. Только набор их для такой графической консоли шире, например, 10×20, 11×22 и так далее — к этому вопросу мы вернёсмся, когда речь пойдёт о настройке консольного ввода и вывода.

После загрузки системы в каждой из активизированных консолей появляется приглашение к авторизации. И после ввода логина и пароля пользователя он видит приглашение командной строки. То есть — тот самый CLI, который и будет через некоторое время главным предметом дальнейших рассуждений кота Manual’а.

В командной строке «голой» консоли можно не только вводить любые команды оболочки, но и запускать программы текстового режима, такие как Midnight Commander, текстовые редакторы Vim или Emacs, браузеры lynx или links. Эти программы так и называются — консольными, хотя некоторые из них, например mc или links, имеют интерфейс, обеспечиваемый символами псевдографики.

Для консоли существуют и настоящие графические программы — вьюверы графических изображений (fbi), скриншоттеры (fbcat), видеоплейеры (mplayer, mpv), браузеры (links2). Однако они работают только в режиме фрейм-буфера, и число их таково, что по палоьцам пересчитает и однорукий. Ибо в предыдущей фразе перечислены чуть ли не все их представители. Так что практически понятие «программа текстового режима» и «консольная программа» — можно считать синонимами.

CLI в терминалах

В большинстве нынешних распространённых дистрибутивов Linux’а применитель практически не видит «голой» консоли — по крайней мере, в нормальной ситуации. Авторизация его осуществляется в уже совсем графическом режиме (то есть с загруженными Иксами) через так называемый дисплейный менеджер. Или, в зависимости от желания, вообще автоматически — инсталляторы практически всех современных дистрибутивов позволяют задать беспарольный вход в систему на стадии установки.

Отступление для параноиков. Вопреки распространённому мнению, так называемый «беспарольный» вход в систему (более точно называемый автоматическим) — ничуть не опасней с точки зрения безовасности, нежели обычный, «парольный». Так что за «беспокойство не беспокойтесь» — дабы позволить врагу народа зайти на вашу машину беспарольно и удалённо — вам (да-ад, именно вам, а не злоумышленнику) придётся несколько постаратья. Ну а кто допускает закадычного врага и злейшего друга до своей машины локально — тот сам себе злейший друг и закадычный враг (сокрвщённо ЗД/ЗЛ), и более иных ему не надо.

Однако вернёмся с «Канатчиковой дачи» в обыденную реальность.

В Иксовом сеансе для реализации CLI существует специальный класс программ, называемых эмуляторами терминала (далее — просто терминалы). Это обычные программы графического режима, вызываемые обычным же для конкретного десктопа или оконного менеджера способом. После чего открывается столь же обычное окно, внутри которого эмулируется виртуальный терминал с запущенной в нём командной оболочкой.

Окно это, как и всякое Иксовое, может масштабироваться произвольно. Однако во многих случаях размер его по умолчанию, определяемый опять же в символах по вертикали и горизонтали, часто примерно совпадает с «разрешением» текстовой консоли — 80×24.

А вот шрифты в терминалах используются самые обычные Иксовые — как правило, векторые Truetype или Opentype. Правда, в любом, наверное, дистрибутиве Linux’а по умолчанию устанавливается также некий «джентльменский набор» из векторых шрифтов ATM и традиционно-иксовых растровых шрифтов, однако ни мне, ни коту Manual’у давненько не приходилось встречать их любителей.

Каков бы ни был выбор применителья с точки зрения форматов, в теминалах используются исключительно моноширинные гарнитуры. Нынче часто именно такие monospace-шрифты (по умолчанию в большинстве дистрибутивов в этом качестве выступает DejaVu Sans Mono) и именуются консольными, в чём легко убедиться, спросив Гошку-капитана за «консольные шрифты».

Вот мы и столкнулись с первым практическим следствием того, что для очень многих (в том числе и не совсем начинающих) применителей

…Бодлер с борделем идентичны,
Ну а Рэмбо и Рембо — родные братья.

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

Однако вернёмся в наше терминальное окно. Поскольку в нём атоматически была запущена какая-либо командная оболочка, то в нём можно вводить любые её команды и запускать любые программы текстового режима — те самые, которые часто называют консольными. Но нужно чётко понимать это в том смысле, что программы эти могут быть запущены и в «голой» консоли. В отличие от настоящих программ графического режима, требующих для своего запуска и работы запущенного сеанса Иксов.

Кстати, второе практическое следствие путаницы между консолью и CLI. Если вы попробуете в любом поисковике найти, скажем, консольный вьювер изображений или скриншоттер, то весь топ выдачи будет забит Иксовыми программами, в которых «консольного» только то, что единственный способ их запуска — прямая команда в строке терминала.

Программ эмуляции терминала существует много. Практически в любой Linux-системе с установленными Иксами имеется программа XTerm, которая является (почти) неотъемлемой составной частью Xorg. Функционал её не поражает воображение, и настройка не вполне тривиальна:

cli-i-zsh_001

Что, однако, компенсируется вездесущностью и нетребовательностью к ресурсам. И потому XTerm имеет свою сферу применения — например, для запуска в неинтерактивном режиме всякого рода мониторов состояния системы или таких утилит, как uCareSystem.

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

Собственная терминальная программа входит в штатный комплект (почти) любой интегрированной среды. В KDE это Konsole, в GNOME и Unity — GNOME Terminal, в MATE — MATE Terminal, в Xfce — XFTerminal, в XLDE — LXTerminal. Оговорка «почти» относится к гашей любимой среде Cinnamon: она своего штатного терминала не имеет. В большинстве сборок этого десктопа используется всё тот же GNOME Terminal, хотя никто к этому не обязывает. В частности, автор этих строк одно время пробовал на эту роль крос-десктопный Terminix, но коту Manual’у он не понравился.

Кстати, кросс-десктопных терминалов также немало, например, Terminator, пожалуй, самый функциональный из всех терминалов вообще, или очень навороченный Termnology. О многих программах этого назначения можно узнать из тематического обсуждения на форуме Matuntu. Там же — впечатления применителей от практического использования многих из них, а также рекомендации по настройкам.

Кроме обычных оконных терминалов, существуют ещё и так называемые терминалы выпадающие (Drop-Down). Их примерами являются Yakuake для среды KDE, Guake и Tilda, ориентированные на Gtk-десктопы. Кроме того, «выпадающий» режим может быть включён и для некоторых обычных терминалов, например, Terminator, Terminix, XFTerminal.

Наконец, терминалы встраиваются в некоторые программы более иного назначения, например, файловые менеджеры. Такая функция, легкимд движением руки включаемая в настройках, имеется в Dolphin’е (штатный файловый менеджер среды KDE), а при наличие соответствующего плагина — и в Nemo (файловый менеджер среды Cinnamon). Встроенных терминалы есть и в некоторых текстовых редакторах — в Kate и Geany.

Что нужно знать о консоли

Таким образом, применителям CLI есть где развернуться в графическом, причём делать это в уютной и комфортной обстановке рабочих сред. И потому нынче мало кто выполняет практическую работу в «голой» консоли. Тем не менее, бывают ситуации, когда её использование — не роскошь, и тем более не выпендрёж, а необходимость.

Первая ситуация — работа на ну очень слабых машинах. Таких, на которых с трудом шевелится даже самый лёгкий из десктопов. Конечно, на сей предмето существуют дистрибутивы с лёгкими менеджерами окон. Однако в некоторых случаях, например, при работе преимущественно с текстами. Их сочинение и редактирование в должным образом настроенной консоли с любитмым текстовым редактором оказывается часто эффективней, нежели в WM.

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

Так что, поскольку от краха системы не следует зарекаться в той же мере, что и от сумы с тюрьмой, кое-что о «голой» консоли знать нужно. И первое тут — это знать о факте её существования, и о том, что консолей бывает несколько. А также о том, как выйти в одну из консолей и переключаться между ними.

Как говорилось ранее, консоль — это сочетание устройств ввода — клавиатуры и мыши, и устройства вывода — дисплея. Однако в Linux’е поддерживаются ещё и так называемые виртуальные терминалы, которые для простоты также называют консолями. Это (почти) самостоятельные системы (правда, работающие за счет ресурсов одной и той же машины), в каждой из которых может быть открыт отдельный сеанс работы пользователя (или пользователей, если их больше одного). И в каждом сеансе может быть запущен независимый круг задач, со своими собственными настройками, наиболее для этого круга подходящими.

По умолчанию в подавляющем большинстве дистрибутивов Linux активизировано шесть витруальных консолей (хотя в некоторых, которые с претензиями, как ROSA, их аж 12). При авторизации через дисплейный менеджер Иксовый сеанс обычно запущен на консоли, следующей после последней текстовой. То есть, почти всегда, на седьмой. Хотя, например, в Cintu Иксы и Cinnamon по умолчанию запускаются на восьмой консоли — так уж исторически склалось.

Для перехода из сеанса Иксов в одну из активизированных консолей (для определённости будем считать что с первой по шестую) служит комбинация клавиш Control+Alt+F#, где F# — любая из функциональных клавиш с 1-й по 6-ю. А далее переключение между консолями осуществляется комбинацией клавиш Alt+(F1/F6).

Сразу мосле переключения к любую консоль в ней нет ничего, кроме краткой справки и приглашения к авторизации. Например, в моей Cintu это выглядит так:

Ubuntu 16.04.2 LTS Cintu tty#
cintu login:

Здесь tty# — номер текущей консоли.

После ввода логина и затем пароля появляется приглашение командной строки — и можно начинать работу. Например, при аварийно-спасательных мероприятиях в одной консоли в текстовом редакторе правятся конфигурационные файлы, в следующей (или следующих) — выводятся нужные man-страницы, а при необходимости и запускается текстовый браузер (например, links), дабы приобщиться к опыту тех, кто в похожие ситуации попадал и не поленился описать выход из них.

Виртуальная консоль представляет собой нечто вроде окна в систему, и это не просто метафора. Всё, что видно в данный момент на дисплее, помещается в экранную память консоли (console screen memory — её не следует путать с историей команд, поддерживаемой средствами командной оболочки). И не только видимое: по нажатию комбинации Shift+PgUp и Shift+PgDown) можно «пролистать» несколько экранов назад и вперед — вплоть до текущего на предмет просмотра ранее введённых команд и/или их вывода.Да и вообще любой информации, которая была видна на последних нескольких (у меня по умолчанию — четырёх) экранах.

Буфер экранной истории в Linux — общий для всех текстовых консолей. И потому первое же переключение на другую консоль подменяет его содержимое, и при обратном переключении доступ к истории именно этой консоли становится невозможным (в отличие, например, от FreeBSD, где каждая из консолей имеет собственный буфер истории).

Содержимое буфера консоли можно сохранить в виде файла. Делается это командой setterm из пакета util-linux. Из-за своего многоцелевого назначения команда эта имеет множество опций, однако в сегодняшнем контексте важны только следующие: dump, append и file.

Команда

$ setterm --dump

создает «слепок» буфера текущей виртуальной консоли в виде простого текстового файла с именем по умолчанию — screen.dump. В качестве ее аргумента можно использовать номер консоли, для которой требуется сделать дамп. А добавление опции --file имя_файла перенаправит этот дамп в файл с указанным именем. Опция же --append присоединит новый дамп к уже существующему файлу — умолчальному screen.dump, или заданному как значение опции --file.

Служба консольной мыши

Просмотром экранной памяти консоли и её сохранением дело не ограничивается. Нужные команды, фрагменты вывода etc. можно выделить, скопировать и вставить в любое нужное место. Только для этого надо наладить службу консольной мыши, обспечиваемую пакетом gpm: последнее время майнтайнеры большинства дистрибутивов взяли моду не включать её по умолчанию.

Так что для начала следует установить соответствующий пакет. В deb based системах это делается не просто, а очень просто:

    $ sudo apt install gpm

После чего в консоли появляется курсор мыши в форме светлого прямоугольника, и можно приступать к делу — поддержка мыши включается автоматически, не требуя ни рестарта каких-либо сервисов, ни, того паче, перезагрузки системы.

В более иных системах после установки пакета gpm обычно приходится выполнить кое-какие манипуляции руками. Какие именно — зависит от дистрибутива. Здесь, на Блогосайте, можно найти несколько примеров, как это делается в Salix’е (и вообще в клонах Slackware), в Antergos’е (и, вероятно, родительском Arch’е), в Void Linux’е, а также в абстрактной системе, использующей systemd. Правда, всё это сочинялось несколько лет назад, и гарантий, что оно так и работает сейчас, дать не могу. Но, по крайней мере, направлением для копания эти материалы послужить могут.

Однако предположим, что служба консольной мыши включена и работает. Теперь надо запомнить, что здесь этот девайс — не указательно-позитционирующее устройства, а средство для copy&paste. Для чего требуется:

  • выделить фрагмент экрана мышью обычным образом, при зажатой левой кнопке — он автоматически скопируется в буфер памяти; нужно только помнить, что копируется при этом аккурат то, что видно на дисплее — выходящие за границы экрана строки в буфер не попадут;
  • подвести текстовый курсор к нужному месту стрелками управления оным;
  • щелчком средней кнопки мыши вставить содержимое буфера в позицию курсора.

В современных скроллирующих мышах функцию средней кнопки выполняет колёсико. Если нет ни колёсика, ни средней кнопки (как на большинстве тачпадов и трекболов — она эмулируется одновременным нажатием двух имеющихся. А вот с новомодными «многопальцевыми» бескнопочными тачпадами этот номер не прокатывает: настройки его, выполняемые обычно средствами рабочей среды, в консоли силы не имеют.

Таким образом можно копировать фрагменты текущего экрана, перетаскивать данные из одной консоли в другую, а также извлекать команды из экранной истории консоли.

Настрока консоли

Выше было вскользь сказано, что колмфорт работы в консоли обеспечивается должной её настройкой. Каковая сводится к установке подходящего экранного шрифта (по умолчанию в большинстве дистрибутивов он очень так себе) и привычной раскладки клавиатуры.

Опять-таки, в deb based системах это делается с помощью удобной утилиты dpkg-reconfigure, основанной на системе настройки пакетов debconf. Которая, правда, для начала сама нуждается в настройке своим же собственным ирструментом:

$ sudo dpkg-reconfigure debconf

Она запускает панель с общей информацией о debconf:

cli-i-zsh_002

Ознакомившись с ней, можно выбрать интерфейс для dpkg-reconfigure. Диалоговый интерфейс используется в нём по умолчанию — и причин менять его я не вижу:

cli-i-zsh_003

Следующая панель подробно объясняет нам значение важности задаваемых при конфигурировании вопросов (или, как это называется в man-странице, их приоритетов):

cli-i-zsh_004

И к тому же она показывает разницу между псевдографическим диалоговым интерфейсом и интерфейсом графическим: первый намного более подробен, что весьма полезно при начальном знакомстве с утилитой dpkg-reconfigure и (или) эпизодическом её применении.

Собственно выбор приоритетов производится на следующей панели. По умолчанию здесь отмечен высокий приоритет, то есть задаваться будут только самые важные и критические вопросы. Однако максимально тонкая настройка возможна при низком приоритете — правда, он требует понимания сущности этих вопросов.

cli-i-zsh_005

На этом настройка debconf заканчивается — можно переходить к настройкам того, ради чего эта система настраивалась.

Настройка экранных шрифтов выполняется такой командой:

$ sudo dpkg-reconfigure console-setup

Которая начнёт свою работу с определения кодировки вывода символов на экран (по умолчанию предлагается UTF-8):

cli-i-zsh_006

Определение набора символов в наших условиях очевидно:

cli-i-zsh_007

Далее выбирается собственно экранный шрифт вывода. И здесь TerminusBold вне конкуренции почти в любых случаях:

cli-i-zsh_008

Матрица шрифта выбирается, исходя из своего зрения. На скриншоте — то, что подходит мне:

cli-i-zsh_008

Всё, с настройкой вывода покончено: шрифт изменится немедленно (причём сразу во всех виртуальных консолях), без всякой перезагрузки. И это опять же можно наблюдать вживе, находясь в одной из текстовых консолей.

Настройка ввода, то есть консольной клавиатуры, запускается такой командой:

$ sudo dpkg-reconfigure keyboard-configuration

И выглядит так:

cli-i-zsh_010

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

cli-i-zsh_011

А затем — вариант раскладки. По умолчанию он, разумеется, называется просто Русская (то есть winkeys — велик могучам русскам языка), но мой выбор — Typewriter Legacy aka Русская (печатная машинка, устаревшая):

cli-i-zsh_012

Разумеется, если в системе существует более двух раскладок клавиатуры — между ними нужно как-то переключаться. Вот следующим шагом и проводится разъяснительная работа — как именно это делать, например, через традиционный Caps Lock:

cli-i-zsh_013

Но возможны и многие другие варианты переключателей. Правда, только модальные — немодальные переключателив консоли не поддерживаются.

А вот возможность выбрать временный переключатель (то есть действующий, пока нажата клавиша) — имеется, хотя выбор их в консоли существенно меньше, чем в Иксах:

cli-i-zsh_014

В определении модификатора я большого смысла не вижу:

cli-i-zsh_015

В отличие от определения клавиши Compose (здесь она называется составной) — эта опция была бы полезна. Но увы — в режиме Unicode она не поддерживается, так что этот шаг приходится пропустить:

cli-i-zsh_016

Нужно ли задействовать комбинацию Control+Alt+Backspace под прерывание работы X-сервера — дело личного выбора):

cli-i-zsh_017

На этом завершается настройка клавиатурного ввода в консоли — правда, вот тут-то и потребуется перезапуск системы, чтобы изменения вступили в силу. Заканчивается и сюжет этой серии эссе. Однако возможности команды dpkg-reconfigure не исчерпаны — с её помощью можно настраивать многие другие вещи, вплоть до опций компиляции GCC. Однако к первоочередным настройкам это не относится.

Теперь при желании можно подкорректировать настройки консольной мыши:

$ sudo dpkg-reconfigure gpm

Что вызовет такую панель-предупреждение:

cli-i-zsh_018

Отвечать здесь можно что угодно — времена, когда служба gpm конфликтовала с мышью в сеансе Иксов, остались в прошлом. Выбираем имя «мышиного» устройства. Точнее, в большинстве случаев соглашаемся с выбором, предлагаемым по умолчанию:

cli-i-zsh_019

После этого предлагается довольно длинный список всевозможных типов мышей:

cli-i-zsh_020

Вникать в обычно обычно не нужно — достаточно согласиться с тем, что будет предложено после этого:

cli-i-zsh_021

Далее можно установить чувствительность мыши и ещё несколько параметров, которые я оставляю неизменными. После этого происходит остановка работы «мышиного» демона и его повторный запуск с обновлёнными параметрами.

Особенности CLI в терминале

К сказанному осталось добавить несколько слов об особенностях использования CLI в иксовых терминалах. Каковая, в сущности, одна, и касается она копирования, вырезания и вставки фрагментов.

В Иксах имеет место быть два буфера памяти — «мышиный», полностью аналогичный консольному, и родной «иксовый». Начну с последнего.

Помещение в «иксовый» буфер в терминале осуществляется точно так же, как и во всех остальных приложениях графического режима. То есть — либо из контекстного меню по ПКМ, либо стандартными хоткеями копирования, вырезания и вставки. Единственное отличие этих операций в терминале в том, что комбинации клавиш для этого дополняются шифтом:

  • Shift+Control+C — копирование выделенного фрагмента;
  • Shift+Control+X — удаление его;
  • Shift+Control+V — вставка содержимого «иксового» буфера; может выполняться также щелчком средней кнопки (с оговорками, приведёнными далее).

Причина понятна — в «чистом» виде соответсвующие иксовые хоткеи конфликтовали бы с кейбиндингами командной оболочки.

Кроме того, в «продвинутых» терминалах (но не в XTerm, например), как и в большинстве программ графического режима, работает Drag&Drop.

И раз уж речь зашла о хоткеях, полезно помнить: комбинация Shift+Control+T открывает новую вкладку терминального окна во всех терминалах, вкладки поддерживающих.

Мышиный буфер в терминалах (и вообще в программах для Иксов) работает точно так же, как и в консоли. То есть для помещения в него экранного фрагмента достаточно выделить его мышью. А для вставки — щёлкнуть средней её кнопкой в нужной позиции. И только так — никаких хоткеев для вставки из «мышиного» буфера не существует.

«Мышиный» буфер абсолютно независим от «иксового». И они спокойно уживаются вместе. До той поры, пока из них не нужно чего-то куда-то вставлять. Потому что в этом случае действует железное правило LIFO: последним вошёл — первым выщел.

То есть если фрагмент был сначала скопирован в «мышиный» буфер простым выделением, а затем в Иксовый буфер помещён другой фрагмент — докопаться до первого будет очень сложно, ибо на СКМ пойдёт вставка из буфера «иксового».

А вот обратная процедура действительно легка и приятна: сначала вставка в «иксовый» буфер, скажем, по Shift+Control+C, затем вставка в «мышиный» буфеп простым выделением, затем помещение его контента в нужно место СКМ, и затем копирование Shift+Control+V. Более того, кроме добавления приятственности, это здорово повышает эффективность работы.

[Общее содержание]

Оставить комментарий

Перейти к верхней панели