metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-04-19 01:52 pm

vim/emacs/прочее use case: копипаста

А вот объясните мне наконец, как правильно под линуксом заниматься копипастой?
Т.е. в винде в 99% случаев я делаю так: открываю фар-notepad-вижуал-студию-ворд-дельфи, нахожу нужную строку, далее Shift-стрелки, выделяю нужный мне кусок, потом Ctrl-Insert - копирую, затем открываю нужный файл и делаю Shift-Insert 100500 раз, размножая нетленку. Если же нужно заменить - то сначала выделяю заменяемый текст. Если текст таскается между разными программами - то переключение по alt-tab. Т.е. все производится с клавиатуры, причем весьма быстро и с минимумом нажатий кнопок и перемещений пальцев.

Как такое же сделать, например в vim или emacs, само собой, без всяких средних клавиш мыши, иксов и прочей несуществующей фигни?

[identity profile] freiksenet.livejournal.com 2012-04-19 11:42 am (UTC)(link)
emacs:
C-Space поставить метку, клавишами навигации выделяешь.
С-w, M-w - cut, copy
C-y - paste

Если чисто консоль то естественно буфер обмена ака kill ring только в емаксе будет.

[identity profile] gds.livejournal.com 2012-04-19 11:45 am (UTC)(link)
не работает в случае "Если текст таскается между разными программами".

[identity profile] freiksenet.livejournal.com 2012-04-19 11:46 am (UTC)(link)
Если имакс не в консоли то работает.

[identity profile] gds.livejournal.com 2012-04-19 11:53 am (UTC)(link)
проверил, по M-w скопировал, перешёл в терминал -- пастится то, что положил в буфер обмена из фаерфокса (ровно ту фразу, которую цитировал в предыдущем каменте). Перешёл в фаерфокс -- та же история. Запустил gedit -- то же самое. Но! Когда дальше запустил новый емакс, он мне вставил через C-y строчку "gedit", которая была в программе, запускающей gedit (хуйнюшка, вызываемая по Alt-F2).

Цитирую: "Меня доебали уже твои два буфера обмена, блядь. Один охуительней другого, блядь."

[identity profile] freiksenet.livejournal.com 2012-04-19 12:39 pm (UTC)(link)
Значит емакс всё еще юзает иксовый основной буфер. То что я снизу запейстил должно исправить.

[identity profile] tzirechnoy.livejournal.com 2012-04-19 12:59 pm (UTC)(link)
Так напишы демона, который их совмещает. Делов-то.

[identity profile] salas.livejournal.com 2012-04-19 06:43 pm (UTC)(link)
Смутно припоминаю, что в klipper/glipper/ещё какой-то программе в этом роде такая галочка уже есть.

[identity profile] salas.livejournal.com 2012-04-19 06:41 pm (UTC)(link)
Emacs 24 (это может быть важно, они интеграцию gtk-версии с системой сильно крутят), дефолтная настройка в этой части. M-w, после этого вот сюда в Firefox вставляется что средней кнопкой, что S-insert.

[identity profile] freiksenet.livejournal.com 2012-04-19 11:49 am (UTC)(link)
Можно еще в .emacs такое пихнуть. Хз надо ли в современных версиях, у меня "по традиции" лежит.

(transient-mark-mode 1)  ; Now on by default: makes the region act quite like the text "highlight" in many apps.
(setq shift-select-mode t) ; Now on by default: allows shifted cursor-keys to control the region.
(setq mouse-drag-copy-region nil)  ; stops selection with a mouse being immediately injected to the kill ring
(setq x-select-enable-primary nil)  ; stops killing/yanking interacting with primary X11 selection
(setq x-select-enable-clipboard t)  ; makes killing/yanking interact with clipboard X11 selection
(setf interprogram-cut-function 'x-select-text)
(setf interprogram-paste-function 'x-cut-buffer-or-selection-value)
(setq select-active-regions t) ;  active region sets primary X11 selection
(global-set-key [mouse-2] 'mouse-yank-primary)  ; make mouse middle-click only paste from primary X11 selection, not clipboard and kill ring.

[identity profile] gds.livejournal.com 2012-04-19 11:54 am (UTC)(link)
это уже ближе к делу, попробую на досуге.