सामान्य मोड में वर्तमान कमांड को संशोधित करने के लिए बैकस्पेस का उपयोग करें?


9

कभी-कभी सामान्य मोड में कमांड दर्ज करते समय आप एक टाइपो बना सकते हैं, उदाहरण के लिए यदि मैं टाइप करना चाहता 10dkहूं, तो मैं गलती से टाइप करना शुरू कर सकता हूं 19d

चूँकि कमांड पूरा नहीं हुआ है / अभी तक प्रतिबद्ध नहीं है, क्या बैकस्पेस का उपयोग करके गलत कुंजियों को हटाना संभव है, जैसे: 19d<backspace><backspace>0dkइसके बजाय भागने से बचने और कमांड को पुनः प्राप्त करने के लिए?

साइड प्रश्न: क्या डेटा संरचना के लिए एक विम शब्द है जो वर्तमान कमांड को प्रतिबद्ध होने से पहले रखता है?


1
संभवतः, इसे नए संस्करणों में एक विशेषता के रूप में पूछा जा सकता है!
सिबिकोडर

3
सम्बंधित: vi.stackexchange.com/questions/570/…
SibiCoder

4
AFAIK संभव नहीं है - लेकिन, चूंकि ये क्रम कम हैं, मुझे यकीन नहीं है कि इस तरह की सुविधा हासिल क्या होगी। जब आपको पूरे अनुक्रम को पुनः प्राप्त करना होता है, तो कम से कम आप इसे "दोहराने" के लिए मजबूर करते हैं जब तक कि आप ऐसी कोई गलती नहीं करते हैं;) (यानी - दोहराता चरित्र बनाता है! इरादा इच्छित)।
वैनलेसर

1
@VanLaser एक वीमर का सबसे बुरा सपना कुछ दोहराने के लिए "मजबूर" किया जा रहा है;) इसके अलावा, मैं टाइपिंग को चूसता हूं और एक खाली कीबोर्ड रखता हूं, इसलिए इसे सही होने से पहले 256 बार कमांड को गड़बड़ाना मेरे लिए असामान्य नहीं है।
HellaMad

4
जब एक खराब टाइपिस्ट एक खाली कीबोर्ड का उपयोग करता है तो क्या गलत हो सकता है?
रोमेनैल

जवाबों:


3

ऐसा करने का कोई तरीका नहीं है और यह सामान्य है कि ऐसा नहीं है: सामान्य मोड कमांड आमतौर पर बहुत कम होते हैं और Escयदि आप इसे गड़बड़ करते हैं तो इसे रद्द किया जा सकता है।

:normalकमांड का उपयोग करने के लिए एक संभावित समाधान होगा । यह प्रक्रिया को लंबा बनाता है लेकिन उदाहरण के लिए यदि आप :normal 10jकमांड लाइन में टाइप करते हैं, तो Vim निष्पादित करेगा 10jजैसे कि आपने इसे सामान्य मोड में टाइप किया था। (देखें :h :normal)

आप इन पंक्तियों को अपने साथ जोड़ सकते हैं .vimrc:

nnoremap <F4> :call NormalModeCommand()<CR>

function! NormalModeCommand()
    let command = input("Normal command: ")
    execute "normal " . command
endfunction

वे एक मानचित्रण बनाते हैं (यहां F4लेकिन जो भी आप चाहते हैं उसका उपयोग करें) जो फ़ंक्शन को कॉल करेगा NormalModeCommand()

फ़ंक्शन आपको कमांड लाइन में एक स्ट्रिंग टाइप करने की अनुमति देता है और फिर एक सामान्य मोड कमांड के रूप में आपके द्वारा टाइप किए गए स्ट्रिंग को निष्पादित करता है। जैसा कि आप कमांड लाइन में स्ट्रिंग टाइप करते हैं आप इसे हर दूसरे कमांड की तरह सही कर सकते हैं। बेशक यह आदर्श नहीं है, लेकिन एक बार फिर विम का मतलब यह नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.