簡體   English   中英

如何在emacs中使用python中的元點(M-。)?

[英]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

這里提到的大多數答案都已過時。 一個簡單的解決方案是使用elpy作為M-. 沒有etags(需要額外的工作)。

按照此處的說明安裝elpy

M-x package-install elpy

然后安裝python包

$ sudo pip install rope jedi

重啟emacs,打開任何python文件並運行M-.

Elpy已完整記錄,您可以閱讀有關M-. 在這里

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-modecompany-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM