2013-07-06 260 views
1

我已經使用xbindkeys配置了一個鍵盤快捷鍵來運行python腳本。從python腳本運行vim命令

現在,在編輯任VIM文件,如果用戶按下該鍵盤shortcut-

  • 我希望我的python腳本來運行這個命令來粘貼路徑和線路沒有到系統clipboard-

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

  • 然後我想我的腳本這條道路從系統剪貼板複製和進一步處理它

你能爲我提出一個好的解決方案嗎? 在此先感謝

+1

如果你想複製到系統剪貼板,那麼你可以使用這個命令'os.system(「echo'hello world'| pbcopy」)' –

+0

@kylek感謝您回覆,關於第一部分的任何想法,對我很重要。 –

+0

@ kylek我在Linux上,這對我有用[鏈接](http://www.answermysearches.com/python-how-to-copy-and-paste-to-the-clipboard-in-linux/286/ ) –

回答

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> 

看一看這個鏈接獲取更多信息蟒蛇/ VIM接口: http://vimdoc.sourceforge.net/htmldoc/if_pyth.html和,當然,:h python

如果你的腳本很長,我會建議把所有東西放在單獨的python-only文件中。

:h pyfile 

在這種情況下應該有所幫助。

+0

我可以使用鍵盤快捷鍵來調用這個腳本,比如使用ctrl + shift + e或者我只能從vim調用它。 你把這個文件放在哪裏以及你用什麼擴展名.py? –

+0

您可以使用vim中的鍵綁定來調用它。您可以將函數(和鍵綁定)放在.vimrc中。如果你把它放在一個文件擴展名爲「.vim」的文件中,你只需確保vim在啓動時讀取(源)文件。參見':h source'。正如我所說的,你可以把Python代碼放在​​一個'.py'文件中,並用'pyfile'加載它。 – qzr

1

您應該使用Vim的Python API,而不是外部Python腳本。見:h python。您可以通過其功能直接訪問所有信息。您可以使用vim.command()評估vim命令以與剪貼板交互。

還有其他方法可以使用例如PyGTK,或者更直接地通過python-xlib,但可能會更困難。