मैं पात्रों को कैसे स्थानांतरित करूं या Emacs के स्थानान्तरण जैसे शब्द?


10

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

dc dir

सेवा

cd dir

चरित्र पर CTRL+ दबाकर ।Tc

क्या Vi / Vim में कुछ ऐसा है जो मुझे चारों ओर वर्ण और शब्द स्वैप करने देता है?


1
आप निश्चित रूप से एक मैक्रो / बाइंडिंग बना सकते हैं जो ऐसा करता है। vim.wikia.com/wiki/Reverse_letters एक उदाहरण है
fruglemonkey

जवाबों:


13

वर्णों के लिए, यह काफी सरल है: xpनिम्न पत्र के साथ कर्सर के नीचे पत्र Xpको स्वैप करने के लिए , और पिछले पत्र के साथ कर्सर के नीचे पत्र को स्वैप करने के लिए।

xआदेश कर्सर के तहत चरित्र हटाता है, अगले वर्ण पर कर्सर छोड़कर। Xआदेश बस कर्सर से पहले चरित्र को हटा देता है, एक ही चरित्र उस पर था पर कर्सर छोड़कर।

pवर्तमान कर्सर स्थिति के ठीक बाद अंतिम हटाए गए या पिछले यांके गए पाठ को डालता है। ( Pवर्तमान कर्सर स्थिति से ठीक पहले इसे डालता है, इसलिए xPऔर XPपाठ को उस तरह से छोड़ देता है जैसा आपने शुरू किया था।)

शब्दों की अदला-बदली के लिए, मुझे यकीन नहीं है; शायद कोई और इसका जवाब दे सकता है। आप इसके साथ करीब आ सकते हैं dawwP(या इसे छोटा करने के लिए फिर से तैयार कर सकते हैं), लेकिन यह कई किनारे मामलों पर टूट जाएगा, उदाहरण के लिए एक पंक्ति के अंत के पास।


2
यदि गैर-कोर समाधान स्वीकार्य हैं, तो github.com/tommcdo/vim-exchange है जो न केवल शब्दों का आदान-प्रदान करते हैं, बल्कि पूरे क्षेत्र vimcasts.org/episodes/…
dkns

2

लैटिन भाषाओं के लिए शब्द स्वैप मैपिंग

विम विकी से स्वैप स्वप्न शब्द उच्चारण पात्रों के साथ शब्दों पर सही ढंग से काम नहीं करेगा

ये मैपिंग (यूरोपीय) ISO / IEC_8859-1 लैटिन -1 पूरक वर्णों के साथ काम करने के लिए अनुकूलित हैं । इस के सभी उदाहरणों प्रतिस्थापन द्वारा किया जाता है \wके साथ [0-9A-Za-zÀ-ÖØ-öø-ÿ_\-]और के सभी उदाहरणों \_Wके साथ \_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-]

खोज हाइलाइटिंग की समाशोधन

इसके अलावा, खोज हाइलाइटिंग को साफ़ किया जाता है जहाँ आवश्यकता होती है। यह :nohlsearch<return>जरूरत पड़ने पर प्रत्येक मैपिंग के अंत में जोड़कर प्राप्त किया जाता है ।

यहाँ अंतिम परिणाम है:

" Use gc to swap the current CHARACTER with the next, WITHOUT changing the cursor position.
nnoremap <silent> gc xph

" Use gw to swap the current WORD with the next, WITHOUT changing the cursor position.
nnoremap <silent> gw "_yiw:s/\(\%#[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\(\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\([0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)/\3\2\1/<CR><c-o><c-l>:nohlsearch<return>

" Disable Alt+[menukey] menu keys (i.e. Alt+h for help)
set winaltkeys=no

" Use Alt + ← or Alt + h to swap the current WORD with the previous, keeping the cursor on the current word. This feels like "PUSHING" the word to the left.
nnoremap <silent> <A-Left> "_yiw?[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-]\+\%#<CR>:s/\(\%#[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\(\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\([0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)/\3\2\1/<CR><c-o><c-l>:nohlsearch<return>
nnoremap <silent> <A-h>    "_yiw?[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-]\+\%#<CR>:s/\(\%#[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\(\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\([0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)/\3\2\1/<CR><c-o><c-l>:nohlsearch<return>
" <A-h> corresponds to è

" Use Alt + → or Alt + l to swap the current WORD with the next, keeping the cursor on the current word. This feels like "PUSHING" the word to the right.
nnoremap <silent> <A-Right> "_yiw:s/\(\%#[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\(\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\([0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)/\3\2\1/<CR><c-o>/[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+<CR><c-l>:nohlsearch<return>
nnoremap <silent> <A-l>     "_yiw:s/\(\%#[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\(\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\([0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)/\3\2\1/<CR><c-o>/[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+<CR><c-l>:nohlsearch<return>
" <A-l> corresponds to ì

" Use g{ to swap the current PARAGRAPH with the next.
nnoremap g{ {dap}p{
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.