[英]How can I use meta-dot (M-.) in python with emacs?
是否有相當於python的粘液?
例如,如果我將光標定位在foo()上並執行M-。 (跳轉到定義)我想看看函數foo的源定義
無論foo是否存在,這都應該有效
1)本地項目目錄
2)在一些〜/ .virtualenvs / bar / lib / site-packages中
3)在其他一些python-path中
4)虛擬環境正在使用中(即,它應該在我當前的virtualenv中查看)
pymacs / ropemacs組合是否可以執行此操作?
要避免使用-e,您可以使用etags並使用find來遞歸添加py文件:
find . -type f -name '*.py' | xargs etags
M-。 通常運行“ find-tag
”功能。 您應該創建python源文件的TAGS文件。 然后你在做M-之前“ visit-tags-table
”。 這樣,Emacs將跳轉到標簽的所有定義。 鍵入Cu M-。 跳轉標簽的下一個定義。 有關幫助,請參閱find-tag文檔。 請參閱Emacs幫助,了解如何從python源文件創建TAGS文件。
例如,您可以使用Exuberant Ctags來創建TAGS文件。
轉到python文件的根目錄並執行以下操作:
ctags -e -R .
通常在項目的根目錄中創建TAGS文件。
如果你執行像find . -type f -name '*.py' | xargs etags
這樣的etags
,接受的答案會忽略一個重要的觀點find . -type f -name '*.py' | xargs etags
find . -type f -name '*.py' | xargs etags
find . -type f -name '*.py' | xargs etags
然后每次為每個文件生成TAGS文件。
正確的方法是使用--append
將數據附加到現有的TAGS文件中
rm -f TAGS
find . -type f -name '*.py' -print0 | xargs -0 etags --append
此外,如果您想要包含來自虛擬環境站點包dir的標識符(例如: ~/.virtualenvs/bar/lib/site-packages
):
SITEPACKAGES=$(cdvirtualenv;pwd)/lib/python3.6/site-packages/
find $SITEPACKAGES -type f -name '*.py' -print0 | xargs -0 etags -a
*將python3.6
調整為您當前的Python版本
以下將索引您當前的項目
find . -type f -name '*.py' | xargs etags
但是,如果要索引導入的庫。 你首先激活你的virtualenv。 然后使用which
python來檢測libs的位置,然后將它們傳遞給etags。
workon my-project # if using virtualenvwrappwer
source bin/activate # if using virtualenv
find ${$(which python)/\/bin\/python/} -type f -name '*.py' | xargs etags
試試emacs的anaconda-mode和company-anaconda軟件包。 更新配置:
(eval-after-load "company"
'(add-to-list 'company-backends 'company-anaconda))
(add-hook 'python-mode-hook 'anaconda-mode)
(add-hook 'python-mode-hook 'company-mode)
如果你有的話,用pythonic-activate
切換到virtualenv。
現在你有M-.
你可以按M-*
返回!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.