विम में एन डैश डालने का सबसे आसान तरीका क्या है?


33

एन डैश डालने के लिए , मैं ^v u 2014सात कीपेस का उपयोग करता हूं । क्या कोई आसान तरीका है? (मैं डिग्राफ्स को देख रहा था और वहां एन डैश नहीं मिला।)


4
FYI करें, U + 2014 एक EM DASH है। U + 2013 एक EN DASH है। fileformat.info/info/unicode/char/2014/index.htm , fileformat.info/info/unicode/char/2013/index.htm
क्विंसी बॉवर्स

7
यदि आप X11 का उपयोग कर रहे हैं, तो मैं कहूंगा कि XCompose ... क्योंकि यह आपके सभी अनुप्रयोगों पर काम करेगा, न कि केवल विम पर। या यदि आप OSX या Windows पर हैं, तो वे सुविधाएं जो OS प्रदान करती हैं।
मार्टिन टूरनोइज

शायद सबसे आसान तरीका नहीं है, लेकिन मैं <Ctrl-Shift-U>2013<Space>इसका इस्तेमाल करता हूं क्योंकि यह हर जगह काम करता है। कुछ प्रमुख कोड एक लंबा रास्ता तय करते हैं (मैं मुख्य रूप से U + 2013, U + 2014, U + 2026, U + 2212, U + 2192, U + B0; - / - / ... / - / → / / °) का उपयोग करता हूं।
18

जिज्ञासा से बाहर, आप कैसे डैश प्रदर्शित करते हैं ? AFAIK, गैर-निश्चित-चौड़ाई वाले फ़ॉन्ट को ठीक से प्रदर्शित करने का कोई तरीका नहीं है (अर्थात गैर-समान वर्ण चौड़ाई और कर्लिंग के साथ), इसलिए em- और एन-डैश हमेशा हाइफ़न की तरह दिखते हैं जो वर्ण सीमा के चरम किनारे तक विस्तारित होते हैं। क्या आपको इस बात पर एतराज नहीं है कि विम में चरित्र कैसे प्रदर्शित किया जाता है और इसे अन्यत्र कैसे प्रस्तुत किया जाता है?
काइल स्ट्रैंड

2
मैं @Carpetsmoker के साथ हूं: Compose - - -एम-डैश के लिए, Compose - - .एन-डैश के लिए। रचना जादुई है, खासकर यदि आप इसे अन्यथा पूरी तरह से अप्रयुक्त कैप्स-लॉक के लिए मैप करते हैं।
रमनो

जवाबों:


42

आप डिग्राफ का उपयोग कर सकते हैं: Ctrl+k-N(एक पूंजी के साथ N)

इंसर्ट मोड में, Ctrl+kदो-वर्ण अनुक्रम के बाद डिग्राफ दर्ज किया जाता है। एन-डैश के लिए, अनुक्रम है -N

जैसा कि क्विंसी ने बताया, U+2014वह एम-डैश है। यदि आप डिग्राफ का उपयोग करके दर्ज करना चाहते हैं, तो अनुक्रम है -M


इसी तरह, ईएम DASH को <Ck> -M के साथ डाला जा सकता है।
क्विंसी बोव्स

U+2014एन-डैश नहीं है? मेरा पूरा जीवन झूठ था! संपादित करें: अब मैं इसे प्राप्त करता हूं: मेरा टर्मिनल फ़ॉन्ट (इनकंसोलता) दोनों डैश को एक ही तरह से प्रस्तुत करता है।
टॉमस टोमसेक

3
इस उत्तर पर पहुंचने के लिए: हेक्स 2013 दशमलव :digraphs
8211 है। सभी डिग्राफ

10

यदि कोई पूर्वनिर्धारित डिग्राफ नहीं है या आप एक अधिक महत्वपूर्ण कुंजी क्रम चाहते हैं, तो आप डिम्प्रेक्स को अपने विंबक में परिभाषित कर सकते हैं। उदाहरण के लिए, नीचे एन डैश (8211) और एम डैश (8212) के लिए दो डिग्राफ को परिभाषित करेगा जो उनके एक्सकॉम सीक्वेंस को मिरर करते हैं।

digraph -. 8211 -- 8212

:digraphआदेश की उम्मीद मूल्य दशमलव के बजाय हेक्स में निर्दिष्ट किया जा करने के लिए है, जिसके कारण यह एन के बजाय पानी का छींटा 2013 के लिए 8211 है।


एन डैश
डिग्ग

1
@ 200_success मैंने नहीं कहा कि यह नहीं था। :) विम के डिग्राफ विकल्प हमेशा अधिक मानक वाले के साथ संरेखित नहीं करते हैं, इसलिए यह जानना कि अपने स्वयं के डिग्राफ को कैसे परिभाषित करना उपयोगी है, भले ही वह पहले से मौजूद हो।
जामसेन

8

विम में एन डैश डालने का मानक तरीका एक डिग्राफ का उपयोग करना है, जैसा कि टमकोडो ने समझाया है

हालांकि, मैं सामान्य रूप में द्वि आलेख मिल जाए, और विशेष रूप से यह एक ( Ctrl+k, -, Shift+N) टाइप करने के लिए बहुत अजीब। डैश के तेज़ी से इनपुट के लिए, आप सम्मिलित फ़ाइल मोड की निम्न जोड़ी को किसी फ़ाइल टाइप फ़ाइल में जोड़ सकते हैं, जैसे कि .vim/after/ftplugin/markdown.vim

क्रमशः en / em डैश के लिए:

inoremap <buffer> --<space> –<space>
inoremap <buffer> -- —

एनबी इसका <buffer>मतलब है कि यह मैपिंग केवल मार्कडाउन फाइलों पर लागू होगी। यह आवश्यक है क्योंकि कुछ संदर्भ (जैसे प्रोग्रामिंग) हैं जहां मैं नहीं चाहता कि दो हाइफ़न को डैश के साथ बदल दिया जाए।

ये मैपिंग इस तथ्य का लाभ उठाती है कि संदर्भों में मैं आमतौर पर उनका उपयोग करता हूं, एन डैश स्थान से घिरा हुआ है, और उन्हें डैश नहीं है* इन मैपिंग का उपयोग करने का मतलब है कि मैं कम सक्षम पाठ संपादकों में ठीक उसी कुंजीपट का उपयोग कर सकता हूं जिसे मुझे कभी-कभी उपयोग करने के लिए मजबूर किया जाता है और फिर भी एक समझदार आउटपुट प्राप्त होता है। **

मैं वास्तव में उपरोक्त की तुलना में थोड़ा अधिक जटिल समाधान का उपयोग करता हूं, क्योंकि टाइपोग्राफिक कारणों से, मुझे अपने एम-डैश को घेरना पसंद है बालों के स्थानों के । मार्कडाउन में इन्हें रखने से यह कम पठनीय हो जाता है, लेकिन सौभाग्य से, विम का इसके लिए एक समाधान है, इसके "कंसीलर" फंक्शन के साथ, जो कि कर्सर के अलग लाइन पर होने पर आपको कुछ सिंटैक्स आइटम छिपाने की अनुमति देता है: ***

inoremap <buffer> --<space> –<space>
inoremap <buffer> -- &#8202;—&#8202;

syntax match entity_hairspace "&#8202;" conceal
setl conceallevel=2

* अगर मुझे कभी एन डैश का उपयोग करने की आवश्यकता होती है, तो मैं मैपिंग टाइप करने के बाद बैकस्पेस दबा सकता हूं।
** यदि आप आम तौर पर इस तरह एन-डैश का उपयोग नहीं करते हैं, या यदि आप कभी विम से बाहर उद्यम नहीं करते हैं, तो आप मैपिंग को ट्रिगर करने के लिए कुछ और उपयोग कर सकते हैं: जैसे --.और ---। यदि आप अन्य ट्रिगर्स का उपयोग करते हैं, तो आप इसे सीधे अपने .vimrc में भी रख सकते हैं, और <buffer>विकल्प हटा सकते हैं।
*** आप ccharसिंटैक्स आइटम को एकल वर्ण के साथ बदलने के लिए, उन्हें पूरी तरह से छिपाने के बजाय एक संक्षिप्त चरित्र का भी उपयोग कर सकते हैं । यदि आप एन्कोडिंग समस्याओं के बारे में चिंतित हैं, तो आप इसका उपयोग &ndash;फ़ाइल में HTML संस्थाओं को प्रदर्शित करने के लिए Vim प्राप्त करने के लिए कर सकते हैं ।


तो आप विम में डैश का उपयोग करते हैं? क्या वे एक प्रकार के विषम नहीं दिखते हैं, क्योंकि उन्हें केवल एक कॉलम-चौड़ाई दी जाती है? क्या आपको पता है कि वास्तव में दो स्तंभों के लायक अंतरिक्ष की एक अच्छी मात्रा में एम-डैश बनाने के लिए कोई चाल है?
काइल स्ट्रैंड

@KyleStrand आप कैसे हैक करना चाहते हैं? इसे आज़माएँ: set conceallevel=1 | syntax match longdash '—' conceal cchar=-(ध्यान दें कि इस कमांड में पहला डैश एक एम-डैश है, और दूसरा एक फुलफ़ॉर्म हाइफ़-माइनस है।)
रिच

मुझे डिस्प्ले में कोई अंतर दिखाई नहीं दे रहा है, या देखें कि क्यों डिस्प्ले को दो कॉलम तक ले जाएगा। क्या आपने संयोग से मेरे प्रश्न को गलत समझा, या क्या यह संभव है कि मैं आपके सुझाव को गलत समझ रहा हूं?
काइल स्ट्रैंड

.... वास्तव में, मुझे विम सिंटैक्स विनिर्देश के बारे में कुछ भी पता नहीं है। क्या syntax matchवाक्यविन्यास फ़ाइल के संदर्भ में भी कमांड काम करती है?
काइल स्ट्रैंड

@KyleStrand मैंने आपका प्रश्न समझा। क्या आपने उस लाइन को अपने vimrc में कॉपी करने की कोशिश की? या अभी इसे विम में चला रहे हैं? :)
अमीर

3

मेरे फ्रेंच AZERTY मैक कीबोर्ड पर, मैं Alt+ के साथ एन डैश लगा सकता हूं -। आपका माइलेज स्पष्ट रूप से भिन्न हो सकता है।


2
Alt+-(या Option+-पेडिक होने के बजाय ) एक मैक-विशिष्ट शॉर्टकट है। यह OS X में हर जगह काम करता है, लेकिन vi या vim से संबंधित नहीं है।
ash108

1
मैकविम में काम करता है, लेकिन टर्मिनल vim में यह [Esc] की तरह काम करता है -, इस प्रकार नॉर्मल मोड में स्विच करता है और पिछली लाइन की शुरुआत में कर्सर डालता है।
२०० से

3

मेरा यूनिकोड प्लगइन स्थापित करें , विम दर्ज करें और CtrlXCtrlZयूनिकोड पूर्णता को सक्रिय करने के लिए DASH टाइप करें ।

यहाँ छवि विवरण दर्ज करें

(नोट में -N विवरण में जो उस वर्ण में प्रवेश करने के लिए डिग्राफ दिखाता है)


0

रिच के शानदार जवाब से प्रेरित होकर मैंने निम्नलिखित लाइनों को अपने vimrc में जोड़ा है:

" For en/em dashes, respectively
autocmd FileType markdown imap -- –
autocmd FileType markdown imap --- —

एक इलाज की तरह काम करता है!


0

एन डैश के लिए एक डिग्राफ जाने का सबसे अच्छा तरीका है, जैसा कि विभिन्न अन्य उत्तरों में सुझाया गया है। लेकिन मनमाने ढंग से यूनिकोड वर्णों के लिए, एक अन्य तरीका ^Vइन्सर्ट मोड (देखें :he i_CTRL-V_digit) में उपयोग करना है ।

एक एन डैश के लिए जो उदाहरण के लिए होगा ^Vu2013


मुझे अब एहसास हुआ कि यह वास्तव में ओपी पहले से ही क्या कर रहा था! (हालांकि एन डैश 2013 है, 2014 नहीं - यह डैश है।) मुझे लगता है कि यह अभी भी जवाबों के ढेर में कहीं अच्छा हो सकता है।
कंपकंपी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.