: लाइन के बजाय कर्सर के बाद पढ़ें


11

मैं :r !uuidgenबफर में एक नया यूआईडी डालने के लिए अक्सर उपयोग करता हूं । यह काम करता है, लेकिन मैं आमतौर पर उद्धरणों के बीच uid डालने का प्रयास कर रहा हूं, और :r !uuidgenuuid को एक नई लाइन पर प्रिंट करता है।

इस समस्या को हल करने के लिए, मैं वर्तमान में एक साधारण कीमैप का उपयोग कर रहा हूँ:

nnoremap <C-u> mm:r!uuidgen<CR>dW"_dd`mp

यह मैक्रो मार्क सेट mmकरता है, यूआईडी को सम्मिलित करता है r!uuidgen, सम्मिलित यूआईडी dWको हटाता है, अतिरिक्त लाइन को हटाता है "_dd, मार्क पर वापस जाता है BACKTICKmऔर अंत में यूआईडी को पेस्ट करता है p

क्या :rइस मैक्रो / कीबाइंडिंग के बिना कर्सर के ठीक बाद एक रास्ता है जो एक रजिस्टर को बर्बाद करता है?


1
एसयू सवाल , यह भी इस तरह एक के रूप में workarounds के साथ।
मुरु

जवाबों:


8

आप अभिव्यक्ति रजिस्टर का उपयोग कर सकते हैं "=और system():

<C-r>=system("uuidgen | tr -d '\n'")<CR>

यह एक सम्मिलित मोड मानचित्रण में ऐसा दिखेगा:

inoremap <key> <C-r>=system("uuidgen | tr -d '\n'")<CR>

या, अभिव्यक्ति मानचित्रण के साथ:

inoremap <expr> <key> system("uuidgen \| tr -d '\n'")

5

इन्सर्ट मोड से, आप हिट कर सकते हैं Ctrl-R, और फिर टाइप करें:

=system('uuidgen')

ध्यान दें कि यह एक अनुगामी न्यूलाइन जोड़ देगा, क्योंकि यही uuidgenआउटपुट है; इसे ठीक करने के लिए, हम उपयोग कर सकते हैं:

=system('uuidgen')[:-2]

न्यूलाइन को हटाने के लिए।

से :help i_CTRL-R:

एक रजिस्टर की सामग्री डालें। CTRL-R टाइप करने और दूसरे वर्ण के बीच, "" "यह प्रदर्शित करने के लिए प्रदर्शित किया जाएगा कि आपको एक रजिस्टर का नाम दर्ज करने की उम्मीद है।

[..]

'=' अभिव्यक्ति रजिस्टर: आपको एक अभिव्यक्ति दर्ज करने के लिए प्रेरित किया जाता है (अभिव्यक्ति देखें)

Ctrl-uअपने उदाहरण को पसंद करने के लिए इसे बांधने के लिए, आप इसका उपयोग कर सकते हैं:

nnoremap <C-u> i<C-r>=system('uuidgen')[:-2]<CR><Esc>

2

एक और, साथ :python:

:py import uuid, vim; vim.command(':normal i' + str(uuid.uuid1()))

आप निम्नानुसार मैप कर सकते हैं:

:inoremap <key> <esc>:py import uuid, vim; vim.command(':normal a' + str(uuid.uuid1()))<cr>a

यूयूआईडी पायथन यूयूआईडी मॉड्यूल द्वारा उत्पन्न होते हैं ।


1
हालांकि, इसके बारे में जाने के लिए यह एक मुड़ रास्ता है।
मूरू

0

शुद्ध-विम समाधान का उपयोग करने की तुलना में यह शायद कम बेहतर है, हालांकि, यदि आप एक स्निपेट प्रबंधक जैसे कि अल्टिसनीप्स का उपयोग करते हैं तो आप निम्नलिखित जैसे स्निपेट को जोड़ने का प्रयास कर सकते हैं :

snippet uuid "insert new uuid" w
`uuidgen`
endsnippet

इस तरह आप uuidइन्सर्ट-मोड में अपने विस्तृत ट्रिगर को टाइप और हिट कर सकते हैं और uuidइसे संबंधित शेल कमांड के आउटपुट से बदल दिया जाएगा। यह, निश्चित रूप से, अन्य कमांड के लिए आसानी से अनुकूलित किया जा सकता है और अल्टीमेटन डॉक्स में उल्लिखित के रूप में शक्तिशाली तरीकों से विस्तारित किया जा सकता है।

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