จะส่งสัญญาณ ESC ไปยังกลุ่มได้อย่างไรเมื่อคีย์ esc ของฉันไม่ทำงาน?


20

ฉันมีปัญหากับEscปุ่มเมื่อฉันต้องการกลับไปที่โหมดโต้ตอบจากโหมดแทรก มีคีย์อื่นที่ใช้ในการเปิดโหมดแทรกหรือไม่


13
การควบคุมการกด[
โทมัส Dickey

3
ค่อนข้างไม่กี่คำแนะนำไปบนvi.stackexchange.com/q/300/9708เกินไป
Guy

2
Macbook Pro ใหม่ <grin>
Rui F Ribeiro

2
ไม่ thinkpad x1 carbon
Sandra Ross

คำตอบ:


7

โซลูชันที่มีอยู่แม้จะเป็นโซลูชันทั่วไปใน Vim คือทำการแมปคีย์ใน.vimrcการกำหนดค่าของคุณ ในความเป็นจริงผู้ใช้เป็นกลุ่มจำนวนมากมีคีย์สามารถเข้าถึงได้ง่ายขึ้น remapped Escไป ตัวเลือกยอดนิยมคือCtrl+ Enterหรือหรือjjอื่น ๆ

ในการเปิดใช้งานสิ่งนี้ให้ใส่สิ่งต่อไปนี้ในของคุณ.vimrcและโหลด / รีสตาร์ท Vim:

" Shift-Enter
inoremap <S-CR> <Esc>
" Double-j
inoremap jj <Esc>

ข้อมูลเพิ่มเติมและทางเลือก


1
Eyup นั่นเป็นวิธีที่เป็นกลุ่ม อีกวิธีหนึ่งที่ได้รับการส่งเสริมโดยLearn Vim the Hard Way (หนังสือ) คือinoremap jk <Esc>
grochmal

นี่เป็นวิธีแก้ปัญหาที่ดี แต่มีปัญหาอะไรที่ต้องใช้ Ctrl + Enter + j เท่านั้น
Sandra Ross

@SandraRoss คุณสามารถใช้ชุดค่าผสมใด ๆ ที่คุณชอบได้ (โปรดระวังว่ามีบางอย่างเช่น Ctrl-Enter ไม่ทำงานบน macOS) ที่กล่าวว่า Ctrl + Enter + j ทำให้ฉันพิมพ์ยากขึ้นและฉันก็ไม่รู้ด้วยซ้ำว่าคุณสามารถกำหนดค่าชุดค่าผสมสามชุดด้วยสองปุ่มที่ไม่ใช่ตัวปรับเปลี่ยน (Enter, j) ในกลุ่ม
Konrad Rudolph

ตกลงฉันรับรอง อันที่จริงแล้ว Ctrl + Enter + jj ไม่ได้ผลสำหรับฉันเพราะจริงๆแล้วฉันใช้ macos X อย่างน้อยคุณช่วยบอกฉันได้ไหมว่าฉันต้องป้อนอะไรแค่ Ctrl + j
Sandra Ross

@SandraRoss สำหรับที่inoremap <C-j> <Esc>ควรทำงาน :-)
Konrad Rudolph

32

Ctrl- [ส่งอักขระตัวเดียวกันไปยังเทอร์มินัลเป็นEscปุ่มทางกายภาพ หลังเป็นเพียงทางลัดสำหรับอดีตโดยทั่วไป


3
ฉันเคยมีเทอร์มินัล vt220 จริงและแป้นพิมพ์ของมันไม่มีEscapeคีย์ กดCtrl+[เป็นเพียงEscapeวิธีการสร้าง
Kusalananda

11

หากคุณต้องการที่จะสามารถที่จะใช้คีย์เดียวเป็นวิธีการแก้ปัญหาระวัง * บริสุทธิ์ (โดยไม่ต้องแมปเป็นกลุ่ม) Escคุณสามารถกำหนดคีย์อื่นเป็น เช่นเดียวกับผู้ใช้ Emacs แมปCapsLockไปยังCtrlผู้ใช้บางกลุ่ม (ฉันรวม) remap ไปCapsLock Escสิ่งนี้ใช้ได้กับ * ระวังโดยใช้ X11

ใช้xev -event keyboard(แล้วกดCapsLock) เพื่อรับรหัสสำหรับรหัสCapsLock(สำหรับฉันมันคือรหัสรหัส 66) จากนั้นคุณสามารถใช้xmodmapเพื่อทำการแมปกุญแจ:

xmodmap -e 'remove Lock = Caps_Lock' -e 'keycode 66 = Escape'

ในการรับสิ่งนี้เมื่อเข้าสู่ระบบคุณสามารถเพิ่มxmodmapนิพจน์~/.Xmodmapดังต่อไปนี้:

remove Lock = Caps_Lock
keycode 66 = Escape

แต่สำหรับส่วนที่สอง YMMV ~/.Xmodmapเนื่องจากไม่ได้ทั้งหมดผู้จัดการแสดงผลทำงาน คุณอาจจะต้องเพิ่มxmodmap .Xmodmapไป.xinitrcในบางส่วนของพวกเขา


ฉันรู้ว่าคุณหมายถึงอะไร ฉันเคยเห็นมาก่อนหน้านี้ในสัปดาห์นี้
ซานดร้ารอสส์

ฉันจะทำอย่างนั้น แต่ฉันใช้ CapsLock เป็นคีย์เขียนของฉัน (:
DopeGhoti

6

คุณสามารถลอง Ctrl-C ที่เหมาะกับฉันและอยู่ในความคิดของฉันง่ายกว่า ESC อย่างไรก็ตามฉันไม่แน่ใจว่าจะเปิดใช้งานโดยค่าเริ่มต้น


CTRL-C คือ ASCII 0x03ส่ง SIGINT ไปยังเชลล์ - ไม่เหมือนกับ ESC
แมว

@cat มันทำงานโดยทั่วไปเหมือนกันในกลุ่มแม้ว่า ฉันมักจะใช้ Ctrl-C แทน Esc
Erik W

1
@cat: คุณจะได้รับมันฟรีเพราะเสียงเรียกเข้ามีตัวจัดการนั้นอยู่ คุณไม่ต้องทำอะไรด้วยตัวเอง คำตอบนี้ใช้ได้นอกกรอบ; ฉันแค่ลองมัน มันทำงานโดยทั่วไปสำหรับโปรแกรมใด ๆ ? ไม่ แต่นั่นไม่ใช่สิ่งที่ขอ
การแข่งขัน Lightness กับ Monica

2
@cat: จริงเหรอ? หัวข้อคือ"วิธีการส่งสัญญาณ ESC ไปเป็นกลุ่มเมื่อคีย์ esc ของฉันไม่ทำงาน" แท็กเดียวคือกลุ่มและปัญหาที่อธิบายในคำถามนี้เกี่ยวกับการหลบหนีโหมดแทรกของกลุ่ม นี่คือส่วนที่สรุปของคำถาม: "มีคีย์อื่นที่ใช้เพื่อปลดโหมดแทรก" หรือไม่ หากนั่นไม่เฉพาะ Vim และโหมด insert ของมันฉันก็ไม่รู้เหมือนกันว่าอะไร!
การแข่งขัน Lightness กับ Monica

1
@LightnessRacesinOrbit ดีเมื่อฉันเห็นชื่อตอนแรกมันเป็น "คีย์อื่นที่ใช้สำหรับ Esc" และคำถามไม่ได้ดูเฉพาะvimเลย ขออภัย! ¯_ (ツ) _ / ¯
cat

-3

Ctrl + F2

ถูกเปิดใช้งานโดยค่าเริ่มต้น ไม่จำเป็นต้องกำหนดการตั้งค่าใด ๆ

:q! or :wqคุณจะย้ายไปที่โหมดปกติที่คุณสามารถทำได้


3
Ctrl+F2อาจส่งการหลบหนี แต่จะส่งสิ่งอื่นด้วย
Kusalananda
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.