我已经使用 xbindkeys 配置了一个键盘快捷键来运行 python 脚本。
现在,如果该用户按下该键盘快捷键,则在编辑任何 vim 文件时-
我希望我的 python 脚本运行此命令以将路径和行号粘贴到系统剪贴板-
:let @+=expand("%") . ':' . line(".")
然后我希望我的脚本从系统剪贴板复制该路径并进一步处理它
你能建议我一个很好的解决方案吗?提前致谢
您应该使用 Vim 的 Python API,而不是外部 Python 脚本。见:h python
。您可以通过其功能直接访问所有这些信息。您可以评估 vim 命令以vim.command()
与剪贴板交互。
还有其他方法可以使用例如 PyGTK,或者更直接地通过 来获取剪贴板python-xlib
,但可能会更困难。
这适用于我的机器(OSX):
function! CopyToClipboard()
py << EOF
import vim, os
# evaluate a vim expression and save its value to a variable
path_line = vim.eval('expand("%") . ":" . line(".")')
# copy the string to the clipboard
os.system("echo '%s' | pbcopy" % path_line)
# do additional stuff with path_line here
EOF
endfunction
键绑定示例:
nnoremap ,c :call CopyToClipboard()<CR>
查看此链接以获取有关 python/vim 界面的更多信息:http:
//vimdoc.sourceforge.net/htmldoc/if_pyth.html,当然还有:h python
.
如果您的脚本很长,我建议将所有内容放在单独的仅 python 文件中。
:h pyfile
在这种情况下应该有所帮助。