我希望知道“如何”,在粘贴之后,光标的位置是以编程方式阻止(如同使用zen编码)。
对于'插入点',我打算说:当我们输入时,我们的文字会出现闪烁的东西。
所以,让我说我粘贴它:'<text>%insertion point</text>'
我希望'插入点'位于特定位置(在此示例中为%插入点)。
一些细节:
我'不'寻找的东西:
我也对选择下一个选项感到好奇,即:
<text>%first</text><detail>%second</detail>
如果互联网上有更好的地方提出我的问题,请告诉我。 任何能指明我正确方向的信息都将受到高度赞赏。
感谢您考虑我的问题
编辑: 我应该提一下,粘贴之后没有必要,重要的是操纵'插入点'的位置。
答案 0 :(得分:2)
您可以使用xvkbd
发送粘贴密钥组合 Ctrl V ,后跟一系列&lt; - (左)箭头)键完成模板行为,然后映射Fluxbox键盘快捷方式执行此命令
该命令类似于
xvkbd -text "\Cv\[Left]\[Left]\[Left]\[Left]"
然后将其分配到~/.fluxbox/keys
文件中的快捷方式(Mod1是Windows密钥)
Mod1 P :ExecCommand xvkbd -text "\Cv\[Left]\[Left]\[Left]\[Left]"
然而,这需要以某种方式为每个模板进行自定义,并且不适用于 Ctrl V 不是&#34;粘贴&#34的应用程序; (像xterm)。也许对于常见模板,您可以将它们硬编码为不同的快捷方式
Mod1 T :ExecCommand xvkbd -text "<text></text>\[Left]\[Left]\[Left]\[Left]\[Left]\[Left]\[Left]"
如果您只是自定义每个编辑器以单独提供此功能,我怀疑您会有更好的时间。
修改强>
这是一个Python脚本,它从stdin读取并写入适合xvkbd
的输出。它使用百分号作为插入点(例如<text>%</text>
),因此您需要使用反斜杠转义任何实际百分号。
#!/usr/bin/env python
import sys
import re
clip = sys.stdin.read()
# split on percent sign not prefixed by backslash
parts = re.split(r'(?<!\\)%', clip, 1)
# un-escape percent sign
parts = [p.replace('\\%', '%') for p in parts]
tail_len = len(parts[-1])
print(''.join(parts) + '\[Left]' * tail_len)
您需要将剪贴板传递给它,然后将结果传递给xvkbd
。我在这里使用xclip
将X剪贴板输出到stdout
xclip -out | python pastetemplate.py | xargs -0 -I{} xvkbd -text "{}"
它仍然存在需要一段时间来移动光标的问题,但它会自动执行先前的过程。
我真的不认为你会以编程方式移动光标,因为我想你必须使用不同的自动化库,具体取决于目标app的GUI工具包(例如GTK,QT,Flash等)。但是,如果您定位特定的应用程序或工具包,则可以将其解决。
答案 1 :(得分:0)
Vim存储先前被拽/粘贴/更改的文本的位置,其中有两个寄存器,即'[
用于起始行,']
用于另一端。还有字符寄存器以便知道start&amp; amp;的确切字符虚拟列。结束,请阅读:h '[
了解更多信息。