2010-10-01 19 views
5

ग्रहण में, यह आसान शॉर्टैंड CTRL + SHIFT + o है जिसमें स्वत: आयात (शामिल) कथन शामिल होंगे जो क्लास या मॉड्यूल के उपयोग के आधार पर आवश्यक हैं। क्या आपको विम या इमैक के लिए ऐसी कोई प्लगइन मिली है? ताकि यदि आपऑटो vim/emacs में पायथन आयात विवरण शामिल करें?

rmtree 

लिखने और निष्पादित M-x rope-auto-import,

from shutil import rmtree 

फ़ाइल के शीर्ष पर डाला जाता है

+1

http://stackoverflow.com/questions/3825073/is-there-a-plugin-for-vim-to-auto-import-python- पुस्तकालय – atomocopter

+1

शायद आपको अपने प्रश्न को वीआई के emacs तक सीमित करना चाहिए लेकिन दोनों नहीं , क्योंकि जवाब बहुत अलग होंगे। –

+0

जहां तक ​​मुझे पता है, emacs के लिए ऐसी कोई बात नहीं है। हालांकि, यदि आप अक्सर समान निर्भरताओं का उपयोग करते हैं, तो आप अपनी महत्वपूर्ण निर्भरताओं वाली "खाली" पायथन फ़ाइल उत्पन्न करने के लिए Emacs टेम्पलेट्स (http://emacs-template.sourceforge.net/) का उपयोग कर सकते हैं। – phimuemue

उत्तर

4

Ropemacs, rope-auto-import है। हालांकि आप इससे बचना चाहेंगे, क्योंकि मॉड्यूल may not be a very wise idea.

this SO post को रोपेमैक सेट करने के बारे में जानकारी के लिए देखें। README (उदा। /usr/share/doc/python-ropemacs/README.txt.gz) जो रोपेमैक के साथ आता है, में रोपेमैक-ऑटो-आयात कमांड द्वारा उपयोग किए गए कैश को स्थापित करने के लिए उपयोगी जानकारी भी होती है।

+0

unutbu, यह एक उपयोगी सूचक है। बीटीडब्ल्यू, एक गैर-सापेक्ष आयात ropemacs नहीं कर सकते हैं। जैसा कि, मैं shutil.rmtree का उपयोग करता हूं और जब मैं एम-एक्स रोपेमैक-ऑटो-आयात करता हूं, तो यह शटल आयात करता है? –

+0

@ सेंथिल: दुर्भाग्य से, AFAIK, 'एम-एक्स रस्सी-ऑटो-आयात' केवल "एक्स आयात वाई" विविधता के आयात बना सकता है। – unutbu

+0

@unutbu उबंटू का एक आरेख है। :) – qed

2

तो मैं इस सरल कार्य से खुश हूं जो मुझे पहले से ही बार-बार आंदोलनों को बचाता है। जब मैं my-python-import-add फोन:

  • मैं क्या मॉड्यूल आयात करने के लिए कहा रहा हूँ
  • यह या तो एक import xxx बयान या from … आपके द्वारा लिखे गए सम्मिलित करता है (मैं os, sys, from foo import bar, re की तरह एक अल्पविराम द्वारा पृथक सूची दे सकते हैं)।
  • आयात को क्रमबद्ध किया जाता है।
  • बिंदु (निश्चित रूप से) नहीं चला था।
उदाहरण के लिए

तो: M-x my-python-import-add आरईटी os, sys, from foo import bar, requests मुझे देता है:

import os 
import sys 

import requests 

from foo import bar 

पुनश्च: पाया एक चेतावनी: यदि आप पहले से ही एक import बयान की आवश्यकता है।


हम isort अजगर पैकेज पर भरोसा करते हैं:

pip install isort 

और py-isort package (Melpa में) पर,

इतना पढ़ा उनके छँटाई सुविधा अनुकूलित करने के लिए इसकी जांच करने का मदद करता है। मैं अपने आप को लाइन द्वारा एक भी आयात तो मैं

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

setted चाहते समारोह:

संपादित: मैं डाल यह in a gitlab repo

अद्यतन: अब शीघ्र शब्द बिंदु पर से पता चलता है डिफ़ॉल्ट

(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) 
    ) 
) 

मैं अब क्या करूँगा ई बात-पर-बिंदु (जैसे sys.argv) और इसे डिफ़ॉल्ट के रूप में सुझाव दें।=> किया

मुझे विश्वास है कि हम Emacs में एक उपयोगी और पूर्ण ऑटो-आयात सुविधा प्राप्त कर सकते हैं।

+0

धन्यवाद, यह बहुत अच्छा काम करता है और रस्सी का उपयोग करने से बहुत तेज है। –

+0

कूल! :) बीटीडब्ल्यू, मैंने [एक गिट रेपो] बनाया है (https://gitlab.com/emacs-stuff/python-import-add), ताकि आप परिवर्तनों को ट्रैक कर सकें या सुधार सुझा सकें। – Ehvince

संबंधित मुद्दे