1

我已经使用 xbindkeys 配置了一个键盘快捷键来运行 python 脚本。

现在,如果该用户按下该键盘快捷键,则在编辑任何 vim 文件时-

  • 我希望我的 python 脚本运行此命令以将路径和行号粘贴到系统剪贴板-

    :let @+=expand("%") . ':' . line(".")

  • 然后我希望我的脚本从系统剪贴板复制该路径并进一步处理它

你能建议我一个很好的解决方案吗?提前致谢

4

2 回答 2

1

您应该使用 Vim 的 Python API,而不是外部 Python 脚本。见:h python。您可以通过其功能直接访问所有这些信息。您可以评估 vim 命令以vim.command()与剪贴板交互。

还有其他方法可以使用例如 PyGTK,或者更直接地通过 来获取剪贴板python-xlib,但可能会更困难。

于 2013-07-06T10:37:05.350 回答
1

这适用于我的机器(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

在这种情况下应该有所帮助。

于 2013-07-06T10:55:04.773 回答