2010-10-01 16 views
5

Eclipse'de, kullanılan Class veya modül bazında ihtiyaç duyulan import (dahil) ifadelerini otomatik olarak içeren bu kullanışlı shorthand CTRL + SHIFT + o vardır. Vim veya emacs için böyle bir eklenti buldunuz mu? EğerOtomatik Python içe aktarma ifadelerini vim/emacs içine dahil et?

rmtree 

yazma ve çalıştırma eğer M-x rope-auto-import,

from shutil import rmtree 

dosyasının en üstünde yerleştirilir böylece

+1

http://stackoverflow.com/questions/3825073/is-there-a-plugin-for-vim-to-auto-import-python-libraries – atomocopter

+1

Belki de sorunuzu vi'nın emacs'leriyle sınırlandırmalısınız. Cevaplar çok farklı olacağından. –

+0

Bildiğim kadarıyla, emaclar için böyle bir şey yok. Ancak, aynı bağımlılıkları sık sık kullanıyorsanız, önemli bağımlılıklarınızı içeren "boş" bir python dosyası oluşturmak için emacs şablonlarını (http://emacs-template.sourceforge.net/) kullanabilirsiniz. – phimuemue

cevap

4

Ropemacs, rope-auto-import sahiptir. Bu durumdan kaçınmak isteyebilirsiniz, çünkü ropemac'lerin ayarlanması hakkında bilgi almak için may not be a very wise idea. this SO post modüllerine bakınız. Rokemaklarla birlikte gelen README (ör. /usr/share/doc/python-ropemacs/README.txt.gz), ropemacs-auto-import komutunun kullandığı önbelleği ayarlamak için yararlı bilgilere de sahiptir.

+0

unutbu, bu kullanışlı bir işaretçidir. BTW, ropemac'ler göreceli olmayan bir ithalat yapamaz. Gibi, ben shutil.rmtree kullanın ve M-x ropemacs-auto-import yaptığımda, o kapalı ithalatı yapar? –

+0

@Senthil: Ne yazık ki, AFAIK, 'M-x ip-auto-import' yalnızca“ X import Y ”çeşitliliğinden ithalat yaratabilir. – unutbu

+0

@unutbu, Ubuntu'nun bir anagramıdır. :) – qed

2

Bu sayede tekrarlanan hareketlerden zaten kurtulmuş bu basit işlevden memnunum. Ben my-python-import-add aradığında:

Ben içe ne modüller istendi
  • bir import xxx ifadeleri veya yazdığınız from … ya yerleştirir
  • (I os, sys, from foo import bar, re gibi virgülle ayrılmış bir listesini verebilirim).
  • ithalatı sıralanmaktadır.
  • bu nokta hareket etmedi (tabiki). Örneğin bu şekilde

: M-x my-python-import-add RET os, sys, from foo import bar, requests bana verir:

import os 
import sys 

import requests 

from foo import bar 

ps: bir ihtar bulundu: Zaten bir import deyimi olması gerekir.


Biz isort piton paketine dayanmaktadır:

pip install isort 

ve (Melpa olarak) py-isort package üzerine

,

böylece onların sıralama özelliğini özelleştirmek için nasıl kontrol için yardımcı olur okuyun.

düzenlemek: şimdi istemi ile noktasında kelime için öneriler: Ben in a gitlab repo

güncelleme koymak ben

(setq py-isort-options '("--force_single_line_imports")) 

setted yüzden kendimi fonksiyon hattı ile tek ithalat istiyorum varsayılan

(require 's) ;; melpa 
(require 'dash) ;; melpa 

(require 'py-isort) ;; melpa 

(defun my-insert-import (to_insert) 
    (newline) 
    (if (s-starts-with? "from" (s-trim to_insert)) (insert (s-trim to_insert)) 
    (insert "import " to_insert)) 
) 

(setq py-isort-options '("--force_single_line_imports")) 


(defun python-import-add (to_import) 
    "Adds an import statement for every given module. Can give a comma-separated list of modules, like: 
M-x my-python-import-add RET os, sys, from foo import bar, re RET" 
    (interactive "swhat to import ? ") 
    (beginning-of-buffer) 
    (save-excursion 
    (search-forward-regexp "\\(^from \\)?.*import [a-z]+") ;; if not found ? 
    (end-of-line) 
    ;; split the arguments by spaces: 
    (setq to_insert (s-split "," to_import)) 
    ;; insert each elt of the list: 
    (-map 'my-insert-import to_insert) 
    ;; sort the imports: (set your py-isort options. See isort -h) 
    (py-isort) 
    ) 
) 

Şimdi ne yapacağım şimdi e-point-at-point (sys.argv gibi) ve varsayılan olarak öner.=> İşlem tamamlandı

Emacs'ta kullanışlı ve eksiksiz bir otomatik içe aktarma özelliğine sahip olduğumuza eminim.

+0

Teşekkürler, bu harika çalışıyor ve ip kullanmaktan çok daha hızlı. –

+0

Serin! :) btw, ben [bir git repo] oluşturdum (https://gitlab.com/emacs-stuff/python-import-add), böylece değişiklikleri takip edebilir veya iyileştirmeler önerebilirsiniz. – Ehvince

İlgili konular