विंडोज 10 linux bash शेल ctrl + space Emacs में मार्क सेट नहीं करता है


12

विंडोज 10 में मैंने लिनक्स बैश के लिए सबसिस्टम स्थापित किया। लेकिन मुझे Emacs में शॉर्टकट की समस्या है Ctrl+ spaceमार्क पॉइंट सेट नहीं करता है।

मैंने क्या कोशिश की और मदद नहीं की:

  • मैंने विंडोज़ कंसोल के लिए गुण मेनू में "Ctrl कुंजी शॉर्टकट सक्षम करने" को अनचेक करने का प्रयास किया

  • मैंने सफलता के बिना विभिन्न टर्मिनल कॉनमु का उपयोग करने की कोशिश की।

मुझे आश्चर्य है कि अगर यह किसी तरह ubuntu से संबंधित है जो ctrl + space के साथ समान समस्याएं हैं, और विंडोज़ linash bash ubuntu repositories का उपयोग कर रहा है।

जवाबों:


3

इसका कोई समाधान नहीं है , बश टर्मिनल के माध्यम से Ctrl-Space पास बनाने के संदर्भ में, इस लेखन के समय (1 सितंबर 2016) -लेकिन एक वर्कअराउंड है जो कई उपयोगकर्ताओं के लिए पर्याप्त हो सकता है: के माध्यम से कनेक्ट करने के लिए PuTTY का उपयोग करें SSH, जो Ctrl-Space को संभालने के लिए बाध्य करता है। (Tty मोड में, Ctrl- @ से Ctrl-Space को अलग करना असंभव है, क्योंकि वे एक ही वर्ण कोड हैं, लेकिन यह कोई समस्या नहीं होनी चाहिए, जैसा कि डिफ़ॉल्ट रूप से Emacs set-mark-commandउस तरीके को संभालने के लिए सेट किया गया है ।)

  1. के साथ OpenSSH सर्वर स्थापित करें sudo apt-get install openssh-server। यदि यह पहले से ही स्थापित था, sudo apt-get remove openssh-serverतो इसे हटा दें ( ) और फिर इसे कॉन्फ़िगर करें ताकि फाइल को रीसेट किया जा सके।
  2. निम्नानुसार संपादित करें / etc / ssh / sshd_config फ़ाइल (sudo के साथ),

    • यदि कोई अनियोजित लाइन सेटिंग है PermitRootLogin, तो उसे टिप्पणी करें। एक पंक्ति जोड़ें PermitRootLogin no
    • AllowUsers USERNAMEअपने लिनक्स उपयोगकर्ता नाम के साथ USERNAME की जगह एक पंक्ति जोड़ें (यदि आपको नहीं पता कि वह क्या है, तो whoamiअपने बैश प्रॉम्प्ट पर कमांड चलाएं )।
    • आदर्श रूप से आपको SSH कुंजियों का उपयोग करके पासवर्ड रहित प्रमाणीकरण सेट करना चाहिए, लेकिन यह कैसे करें कि इस प्रश्न के दायरे से बाहर हैं (कई गाइड उपलब्ध हैं, "पासवर्ड रहित ssh-keygen" के लिए वेब पर खोज करें)। इस बीच, लाइन को जोड़ें या अनलोड करें PasswordAuthentication yes
    • सेट करें UsePrivilegeSeparation no; संभावना है कि आपको फ़ाइल में एक पंक्ति मिलेगी UsePrivilegeSeparation yes; बस बदलने yesके लिए noऔर बचाने / आदि / ssh / sshd_config फ़ाइल।

    अगर यहां कुछ गलत होता है, तो आप चरण # 1 को दोहराकर फ़ाइल को पुनर्स्थापित कर सकते हैं।

  3. कमांड के साथ SSH सर्वर को स्टार्टअप करें sudo service ssh --full-restart
  4. PuTTY ( यहाँ डाउनलोड करें ) का उपयोग करके , localhostHostname क्षेत्र में लॉगिन करें , बाकी सब कुछ डिफ़ॉल्ट के रूप में। आपको अपने लिनक्स उपयोगकर्ता नाम और अपना पासवर्ड दर्ज करने के लिए कहा जाएगा।
  5. भागो emacs। Ctrl-space वांछित के रूप में चिह्न सेट करेगा।

(ध्यान दें कि ऊपर दिए गए चरण स्वयं, आपके सिस्टम को अन्य होस्ट्स से SSH कनेक्शन स्वीकार करने में सक्षम नहीं बनाएंगे । ऐसा करने के लिए, आपको इनबाउंड टीसीपी पोर्ट 22 को अनुमति देने के लिए अपने विंडोज फ़ायरवॉल नियमों को भी बदलना होगा।)

में एक और उत्तर आप ने कहा, "लेकिन पोटीन एक स्थानीय टर्मिनल नहीं है।" मुझे यकीन नहीं है कि अगर आप जानते नहीं थे कि आप localhostइस तरह से उपयोग कर सकते हैं , या यदि आप एक स्थानीय टर्मिनल से अधिक ओवरहेड के कारण PuTTY को खारिज कर रहे हैं। यदि बाद में, मुझे चिंता नहीं होगी, तो एक इंटरैक्टिव एसएसएच सत्र एक अत्यंत हल्का भार है। (यह एक एक्स विंडो सिस्टम चलाने की तुलना में निश्चित रूप से बहुत कम लोड है ताकि आप एक जीयूआई एमएसीएस या एक एक्सटरम चला सकें!)

इस तरह से एक सीधे टर्मिनल के रूप में चलाने का एकमात्र वास्तविक नुकसान यह है कि पेस्ट घटनाओं को पत्र-दर-अक्षर भेजा जाता है, जैसे कि आपने क्लिपबोर्ड की सामग्री को बहुत तेज़ी से टाइप किया, जिससे बिजली के जोड़े, इंडिकेशन, स्निपेट विस्तार आदि हो सकते हैं। आग। (पेस्ट में की -कॉर्ड कमांड को आग लगाने का कारण नहीं होना चाहिए , क्योंकि पेस्ट खत्म होने तक इन-प्रगति पेस्ट का पता लगाने और की-कॉर्ड को अक्षम करने का तर्क है।)

और मानक बैश टर्मिनल पर कम से कम एक बहुत बड़ा लाभ है, भी: माउस घटनाओं को PuTTY द्वारा इस रूप में समर्थित किया जाता है कि Emacs इसका जवाब दे सकते हैं, इसलिए, विडंबना यह है कि आप माउस के साथ बिंदु को PTTY में भी स्थानांतरित कर सकते हैं, यहां तक ​​कि आप ' स्थानीय टर्मिनल के साथ टी।


5

मैं ConEmu का उपयोग करता हूं। कोई सुंदर तरीका नहीं है, लेकिन इसे मैक्रो का उपयोग करके हल किया जा सकता है।

  1. "सेटिंग्स" खोलें ( शीर्ष पर आइकन पर क्लिक करें )।
  2. "कुंजी और मैक्रोज़" पर क्लिक करें।
  3. दाईं ओर, स्क्रॉल करें जब तक कि आप "मैक्रो 01" .. "मैक्रो 32" विकल्प न देखें, और जो भी उपलब्ध हो (कोई फर्क नहीं पड़ता) को चुनें।
    आइए इस उदाहरण के लिए मैक्रो 01 लेते हैं ।
  4. 1 ड्रॉपडाउन मेनू में "स्पेस" चुनें।
  5. 2 ड्रॉपडाउन मेनू में "Ctrl" का चयन करें। शेष 2 ड्रॉपडाउन मेनू को अछूता छोड़ दें।
  6. GUI मैक्रो फ़ील्ड में नीचे चिपकाएँ :

    keys("\e");keys("x");keys("s");keys("e");keys("t");keys("-");keys("m");keys("a");keys("r");keys("k");keys("-");keys("c");keys("o");keys("m");keys("m");keys("a");keys("n");keys("d");keys("\n")
  7. ऊपर मूल रूप M-x select-mark-commandसे emacs को स्ट्रिंग भेजता है । अब "सेटिंग्स सहेजें" पर क्लिक करें।


यह अंत में इस तरह दिखना चाहिए:

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


आकर्षण की तरह काम करता है। बहुत खुबस!
13

2

showkey -aविंडोज / ubuntu-bash कंसोल में रनिंग करते समय यह दिखाता है कि ctrl + space सिर्फ प्लेन स्पेस भेज रहा है।

और यह किसी भी अन्य linux मशीन ctrl + स्पेस के लिए ssh सत्र के साथ एक ही मुद्दा है जिसे सादे स्थान के रूप में भेजा जाता है।

ऐसा ही व्यवहार किसी भी अन्य विंडोज़ आधारित टर्मिनल (कॉनमू, कंसोल्ज़, मोबाएक्सटर्म) के साथ है - पोटीन को छोड़कर यह अच्छी तरह से संभाल सकता है लेकिन पोटीन स्थानीय टर्मिनल नहीं है।

मुझे लगता है कि विंडोज टर्मिनलों में कुछ दृश्यों के लिए मैपिंग नहीं है। यही समस्या अन्य संयोजनों जैसे कि ctrl + 1 ctrl + 2 .. आदि के साथ है। यहाँ पर टर्मिनल की आवश्यकता है जो कि कीबोर्ड मैपिंग को हैंडल कर सकता है जैसे कि पोटीन जैसे स्वयं के लिए।

मेरा मानना ​​है कि यह मुद्दा भविष्य में विंडोज़ बैश टर्मिनल की रिलीज़ में तय होना चाहिए।


इससे भी बदतर, यह ctrl- @ पास करने के लिए प्रतीत नहीं होता है, या तो, जो सेट-मार्क के लिए अन्य बाध्यकारी है। यदि कोई वास्तविक बाइंड में है, तो वे Mx सेट-मार्क-कमांड का उपयोग कर सकते हैं। अभी के लिए करने के लिए सही बात, शायद, किसी और चीज़ के लिए एक महत्वपूर्ण बंधन निर्धारित करना है।
जिम हंज़िकर

@JimHunziker यह देखते हुए कि set-mark-commandशायद Emacs (सबसे अलग- थलग) में सबसे अधिक इस्तेमाल किया जाने वाला कमांड है self-insert-command, इसके लिए किसी की उंगलियों को फिर से पकड़ना वास्तव में बहुत ही कठिन है , खासकर अगर आप 25+ साल से Emacs का उपयोग कर रहे हैं।
ट्रे

@ ट्रे ने एक और जवाब जोड़ा, अगर आपको खिड़कियों पर एक्समिंग चलाने में कोई आपत्ति नहीं है
पावेल डबियल

@PawelDubiel मेरा उत्तर देखें अभी जोड़ा गया है। (मैंने बाद के पाठकों की मदद करने के लिए आपके लिए आवश्यक से अधिक विस्तृत निर्देश दिए।) आपने किसी कारण से PuTTY को खारिज कर दिया, लेकिन यह नहीं बताया कि वह कारण क्या है। यह निश्चित रूप से एक विकल्प है जो xming + X टर्मिनल की तुलना में सिस्टम पर बहुत कम भार डालता है।
ट्रे

2

यह परियोजना आपको वैकल्पिक टर्मिनल के रूप में मिन्टटी का उपयोग करने की अनुमति देती है: https://github.com/mintty/wsltty । यह PuTTY से लिया गया है, लेकिन SSH की आवश्यकता नहीं है। और PuTTY की तरह, यह Ctrl-space को ठीक तरह से हैंडल करता है।


1

यह समस्या अब विंडोज 10 बिल्ड 14965 में तय हुई है । चेक:

[Environment]::OSVersion

और यदि आपने अपडेट नहीं किया है तो इंस्टॉल करें!


कृपया अपने उत्तर में अधिक विवरण जोड़ें - लिंक कुछ बिंदु पर काम करना बंद कर सकता है जिस पर आपका उत्तर बेकार हो जाता है।
djsmiley2kStaysInside

0

एक हैक है क्योंकि हम विंडोज के लिए एक्स सर्वर स्थापित कर सकते हैं

1 पहले विंडोज़ के लिए xming स्थापित करें

2 शुरू xming

3 फिर विंडोज़ बैश इंस्टॉल से

sudo apt-get install rxvt-unicode-256color

4 फिर खोलें cmd.exeऔर चलाएं

bash.exe -c "urxvtd -q -o -f; bash" 

अब हम बैश कंसोल और रन में हैं

(DISPLAY=:0 urxvtc &)

5 इस बिंदु पर, हमें पहले से ही Xming में एक नया टर्मिनल देखना चाहिए। और हम emacs को टर्मिनल मोड में चला सकते हैं।

emacs -nw

और सभी बाइंडिंग अब ठीक काम करते हैं

संबंधित चर्चा यहाँ https://github.com/Microsoft/BashOnWindows/issues/531 है


PuTTY का उपयोग करने के लिए यह एक बेहतर समाधान क्यों है? यदि आप GUI मोड में Emacs को चलाने जा रहे हैं, तो मैं इसे समझ जाऊंगा, लेकिन आपका उपयोग -nwइसे टर्मिनल में चलाने के लिए करता है, ठीक उसी तरह जैसे कि यह PuTTY के साथ होगा, सिवाय इसके कि आप अब एक पूरी दूसरी विंडो सिस्टम को चलाने जा रहे हैं - से मेरे त्वरित परीक्षण, कि आप एक sshd और PuTTY चलाने से परे लगभग 500 एमबी की स्मृति खर्च करने जा रहे हैं और एक समान उच्च CPU लागत होगी।
ट्रे

@ ट्रे 500 एमबी क्या आप सुनिश्चित हैं? मेरे सिस्टम पर ठीक
5mb है

आह, मैंने इकाइयों को गलत समझा, आप सही हैं। लेकिन तुलनीय sshd + PuTTY संख्या अन्य संख्या का लगभग 25% है, जो भी है; ;-)
Trey
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.