वर्तमान में बैश में मैं set -o viअपने बैश प्रॉम्प्ट में vi मोड को सक्षम करने के लिए उपयोग करता हूं।
मैं इसे ipython में कैसे जाऊं?
नोट: यदि कोई उत्तर सभी * निक्स पर लागू होता है, तो मैं OS X को शीर्षक से हटा दूंगा :)
जवाबों:
हाल ही में किसी के भटकने की स्थिति में, IPython 5.0 ने रीडलाइन से शीघ्र_टॉलकिट पर स्विच किया , इसलिए इस प्रश्न का एक अद्यतन उत्तर एक विकल्प पास करना है:
$ ipython --TerminalInteractiveShell.editing_mode=vi
... या इसे प्रोफ़ाइल कॉन्फ़िगरेशन में विश्व स्तर पर सेट करने के लिए ( ~/.ipython/profile_default/ipython_config.py, ipython profile createयदि आपके पास यह नहीं है, तो इसे बनाएं ):
c.TerminalInteractiveShell.editing_mode = 'vi'
ऐसा लगता है कि समाधान कई अन्य रीडलाइन संगत ऐप्स के लिए काम करता है:
अपनी ~/.inputrcफ़ाइल में निम्नलिखित सेट करें :
set editing-mode vi
set keymap vi
set convert-meta on
set convert-meta on। यह यूनिकोड प्रविष्टि के साथ संघर्ष करता है, इसलिए यदि आप यूनिकोड पेस्ट या टाइप करते हैं, तो आप विभिन्न घटनाओं को ट्रिगर कर सकते हैं, जो आश्चर्य की बात हो सकती है। उदाहरण के लिए, ü टाइप करने का प्रयास करें, और आप एक दिलचस्प परिणाम देखेंगे।
set keymap viबदलावों की तरह दिखता है जो निम्नलिखित आदेशों को प्रभावित करते हैं (की-मोड) और set convert-meta onकुछ कुंजियाँ कैसे व्यवहार करती हैं , यह प्रभावित करती हैं । मुझे यकीन नहीं है कि आपको उनकी ज़रूरत है।
set convert-meta on(और उस लाइन के नीचे कुछ भी) केवल कमांड मोड पर लागू होगा, मोड डालें नहीं।
आप अंतःक्रियात्मक रूप से वी-मोड और एमएसीएस मोड के बीच भी स्विच कर सकते हैं। रीडलाइन डॉक्स के अनुसार उन दोनों के बीच स्विच करने के लिए जिन्हें आप MCJ कुंजी संयोजन का उपयोग करने में सक्षम होने वाले हैं, लेकिन यह केवल मुझे vi-मोड पर स्विच करने की अनुमति देता है - मेरे मैक पर (जहां ESC को 'मेटा' कुंजी के रूप में उपयोग किया जाता है) ) यह है: ESC+ CTRL+ j। Emacs मोड पर वापस जाने के लिए कोई Ce का उपयोग कर सकता है लेकिन वह मेरे लिए काम नहीं करता है - मुझे इसके बजाय MCe करना था - मेरे मैक पर यह है: ESC+ CTRL+ e।
FYI करें मेरी ~ / .inputrc इस प्रकार है:
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
ipythonरीडलाइन लाइब्रेरी का उपयोग करता है और यह ~/.inputrcफ़ाइल का उपयोग करके कॉन्फ़िगर करने योग्य है । आप जोड़ सकते हो
set editing-mode vi
उस फ़ाइल को सभी readlineआधारित एप्लिकेशन बनाने के लिए Emacs के बजाय vi स्टाइल कीबाइंडिंग का उपयोग करें।
ipythonreadlineएक अजगर पुस्तकालय से स्विच किया जाता है prompt_toolkit, 5.0.0इसलिए यह अब काम नहीं करता है।
आप अपने .ipyon स्टार्ट-अप कॉन्फिग फ़ाइल में vi सेट कर सकते हैं। यदि आपके पास ऐसा कुछ नहीं है, तो फ़ाइल को ~/.ipython/profile_default/startup/किसी चीज़ से जोड़कर बनाएं start.py। यहाँ एक उदाहरण है:
# Initializing script for ipython in ~/.ipython/profile_default/startup/
from IPython import get_ipython
ipython = get_ipython()
# If in ipython, set vi and load autoreload extension
if 'ipython' in globals():
ipython.editing_mode = 'vi'
ipython.magic('load_ext autoreload')
ipython.magic('autoreload 2')
from Myapp.models import *
यदि आप Django के साथ ipython का उपयोग करते हैं, और डिफ़ॉल्ट रूप से अपने सभी मॉडल आयात करना चाहते हैं, तो यह अंतिम पंक्ति है।