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.
http://stackoverflow.com/questions/3825073/is-there-a-plugin-for-vim-to-auto-import-python-libraries – atomocopter
Belki de sorunuzu vi'nın emacs'leriyle sınırlandırmalısınız. Cevaplar çok farklı olacağından. –
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