Vim:在Ubuntu中实现Vim实例之间的持久搜索缓冲区

4
我有两个独立的Vim实例正在运行。我想设置我的系统,这样当我在一个Vim中搜索something(使用/?*#),然后在另一个Vim中按下nN,它会在第二个Vim中搜索相同的something。我正在运行Ubuntu。
我已经在我的.vimrc文件中使用set clipboard=unnamed来利用主要的系统剪贴板来复制vim中的内容。
到目前为止的研究: 命令行工具"xsel"让我在Ubuntu中访问三个不同的剪贴板:主要剪贴板(用于选择文本并中键单击粘贴),剪贴板剪贴板(用于Ctrl+C,Ctrl+V等),和次要剪贴板(似乎未使用)。我目前的想法是让Vim使用xsel来设置次要剪贴板,当使用/?*#时,并在按下nN时使用xsel来访问相同的剪贴板。

听起来像是一个很好的问题,适合在Super User或Ubuntu SE上提问。 - Adrian Petrescu
1
明显属于“程序员常用的软件工具”。 - Karl Bielefeldt
3个回答

3

使用您的插件(v0.0.2)进行“/”或“?”搜索时,似乎直到我移动光标之前都没有保存搜索。因此,如果我使用“/”进行搜索,然后按“n”,它会搜索错误的内容。 - talljosh
是的,我使用了CursorHold事件来调用SaveSearch()。但是...我没有得到那种行为。搜索是排他性的,所以它总是强制光标移动...(如果匹配发生的话)。你能提供一个小样本来重新创建我的问题吗? - dahu
啊,你说得对。只有当我搜索窗口中找不到的内容时才会出现这种情况。另外,一个小烦恼是如果我向后搜索(使用 ?#),然后按下 n 它会向前搜索,而 Vim 通常会向后搜索,但我相信我会习惯的。 - talljosh
糟糕!我没有注意到丑陋的[Nn]问题...版本0.0.3试图修复这个问题,但目前仅在当前Vim会话中本地化 - 这意味着,在当前Vim中,[nN]现在按预期工作,但备用Vim将记住它们先前的搜索方向。这可能不会改善 - 除非也将搜索方向保存在/tmp/文件中,但这感觉不对。享受吧。 :) - dahu

1

通过设置clipboard=unnamed,您可以使用let @/=@*let @*=@/(其中*是剪贴板,/是最后一个模式)在最后一个模式寄存器(您搜索的最后一件事)和共享剪贴板之间进行复制。

因此,您可以创建一个将最后一个模式复制到剪贴板并映射到/?*#的函数,以及另一个将剪贴板复制到最后一个模式的函数,用于nN


这很方便,但我实际上不希望这个共享的最后模式寄存器干扰共享剪贴板。 - talljosh

0

不完全是你所问的,但我使用分割窗口(:sp:vsp)来实现这个目的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接