【发布时间】:2019-01-17 20:42:32
【问题描述】:
我正在使用 ZOC,也使用 Windows CMD,同样的事情,当我使用 VIM 突出显示文本并运行 "+y 或 "*y 之类的命令,然后尝试粘贴到我的 Windows 本地编辑器中时,输出为空白,这让我想到,突出显示的文本没有通过 SSH 连接复制/传递到系统剪贴板...
同样,"+p 没有从系统剪贴板粘贴剪贴板内容..
系统信息:
pi@readonly:~/new$ vi --version | grep IMproved
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Sep 30 2017 18:21:38)
pi@readonly:~/new$ vim --version | grep clipboard
+clipboard +job +path_extra +user_commands
+eval +mouse_dec +statusline +xterm_clipboard
pi@readonly:~/new$
当我在 VIM 中打开任何文件并尝试检查寄存器 + 时,我得到了这个:
:reg +
--- Registers ---
Press ENTER or type command to continue
另外,当我运行:echo has('clipboard') 时,我得到1
@PatrickBacon,我通过单击v、滚动文本并使用"+y 拉出了突出显示的文本。以下是显示的寄存器:
:reg
--- Registers ---
"" int c;^J for (i = 0; i < sizeof(s) - 1 && (c = getchar()) != EOF;) {^J s[i++] = c;^J if (c == '\n
"0 int c;^J for (i = 0; i < sizeof(s) - 1 && (c = getchar()) != EOF;) {^J s[i++] = c;^J if (c == '\n
"1 ^J
"2 ^J
"3 p^J
"4 ^J
"5 ^J
"6 p^J
"7 p^J
"8 char s[64];^J size_t i;^J
"9 int atoi(const char *s) {^J int n = 0;^J size_t i = 0;^J^J while (s[i] == '0')^J i++;^J if (s[i]
"r while (s[i] >= '0' && s[i] <= '9')^J n = 10 * n + (s[i++] - '0');^J
"u size_t i = 0;^J^J while (s[i] == '0')^J i++;^J if (s[i] >= '1' && s[i] <= '9') {^J n = s[i++
"z t main() {^J char s[64];^J size_t i;^J int c;^J
"- i
"% t.c
Press ENTER or type command to continue
因此,看起来 yanking 正在 vim 中工作..
问题:
1) 我还应该检查什么来验证“将 VIM 文本中突出显示的内容复制到远程系统剪贴板”的所有要求都已满足?
2) VIM 中存在的寄存器,我的 Linux 中某些目录中的真实文件是否已缓冲?
3) 远程系统剪贴板在我通过 SSH 连接的 Linux 系统中看起来如何?换句话说,远程系统剪贴板是简单的 STDOUT 文件还是它的一部分,在 Linux 上?
【问题讨论】:
-
2) Vim 中存在的寄存器是真实的文件 不,它们是内存缓冲区。
-
如果你使用的是 linux 你必须使用 vim-gtk 才能复制到剪贴板,这里都有解释 (stackoverflow.com/questions/3961859/…)
-
3) 远程系统剪贴板在我通过 SSH 连接的 Linux 系统中看起来如何? 在 Unix 中没有
system clipboard这样的东西/Linux。 X Windows 中有剪贴板和复制缓冲区。 -
@phd “内存缓冲区”是什么意思?换句话说,您的意思是,VIM 本身在运行时消耗了一些 RAM,并且文件存储在其中,还是扩展...?
-
是的,正是如此。
标签: windows vim ssh raspberry-pi clipboard