Skip to content

Latest commit

 

History

History
78 lines (52 loc) · 2.76 KB

clipboard.md

File metadata and controls

78 lines (52 loc) · 2.76 KB

clipboard and selection

在X11系统中,有三种selection:

  1. PRIMARY 在终端中左键选择一块区域,区域内的文本就会被存入PRIMARY selection。 当你在其他地方按下鼠标中键的时后,这块文本就会被粘贴进终端。这个是PRIMARY selection的常见用过。
  2. SECONDARY 没在定义固定的用法,每个应用可以自己定。
  3. CLIPBOARD 顾名思义,当你按Ctrl-C或是右键选择Copy的时候,选中的文本就会进入CLIPBOARD selection。 粘贴时,就从CLIPBOARD selection里拿出本文来。

可以看出,selection是对windows下剪贴板的一种范化。

vim registers

在vim中,yp命令,正常操作的不是X11的selection, 因为vim默认认为自己工作于ssh, console等没有X11的环境的。

在vim中,复制和粘贴的中转站叫registers,可以用:help registers命令查看相关信息:

There are ten types of registers
1. The unnamed register ""
2. 10 numbered registers "0 to "9
3. The small delete register "-
4. 26 named registers "a to "z or "A to "Z
5. Three read-only registers ":, "., "%
6. Alternate buffer register "#
7. The expression register "=
8. The selection registers "* and "+
9. The black hole register "_
10. Last search pattern register "/

与X11相关的是第8类:

8. The selection registers "* and "+

在X11环境中,比如Linux Desktop的Gnome-terminal中启动vim,你就可以分别通过"*p"+p从 CLIPBOARD selection或PRIMARY selection中粘贴内容。y命令同理。即:

"*y 和 "*p: 从剪贴板复制粘贴。
"+y 和 "+p: 从PRIMARY `selection`粘贴。

可以使用"*"+的前提是你的vim编译时加了+clipboard选项。 查看vim编译时有没有加可以用命令:echo has('clipboard')如果返回值是0,说明没有加这个选项。

**:info:** vimscript中获取寄存器的值的函数是getreg和setreg。可以尝试:echo getreg("*").

gtk & vte functions

在gtk中,可以通过gtk_selection_data_setgtk_selection_data_set_text函数设置普通数据和文本到selection。 具体参考: http://irtfweb.ifa.hawaii.edu/SoftwareDocs/gtk20/gtk/gtk-selections.html

paste clipboard image to named file

xclip -o -target TARGETS -selection clipboard          
TIMESTAMP
TARGETS
SAVE_TARGETS
MULTIPLE
image/png
application/web;type="custom/formatmap"
application/web;type="custom/format1"
application/web;type="custom/format0"
xclip -o -target 'application/web;type="custom/format0"'  -selection clipboard | head
file:///home/u_6878103688133476353/.config/LarkShell/sdk_storage/05bb4cd2df8ee3085a5d7e6dd5b354c0/resources/images/img_v2_f59a38a6-e41b-49f2-9442-5b50d34f926g.png