เป็นกลุ่มสามารถปิด Capslock โดยอัตโนมัติเมื่อกลับสู่โหมดปกติหรือไม่?


13

หลังจากเกือบทุกครั้งที่ฉันพิมพ์บางอย่างในตัวพิมพ์ใหญ่ฉันลืมปิด capslock เมื่อกลับสู่โหมดปกติ จากนั้นฉันพยายามเลื่อนเคอร์เซอร์และจบการเข้าร่วมกับกลุ่มของบรรทัดและสิ่งอื่น ๆ อีกมากมายที่ฉันไม่คิดว่าจะเกิดขึ้น

เป็นไปได้ไหมที่จะกำหนดค่า vim ให้ปิด capslock เมื่อฉันกด escape เพื่อเข้าสู่โหมดปกติ?

หากมีวิธีแก้ไขเฉพาะระบบปฏิบัติการฉันสนใจที่จะใช้กับ Linux


"ทางออก" ของฉันนี้คือการแมปแคปล็อคเพื่อ "ไม่มีการกระทำ" (macos) เพราะฉันไม่ได้ใช้ยกเว้นโดยไม่ได้ตั้งใจ
localhostdotdev

คำตอบ:


8

การตอบคำถามนี้บ่งชี้ว่ามันไม่น่าเป็นไปได้ - กลุ่มไม่มีการเข้าถึงระบบปฏิบัติการเพื่อทำการโทร

อย่างไรก็ตามคุณสามารถลองเปลี่ยนพฤติกรรมของคุณเพื่อไม่จำเป็นต้องใช้ Caps Lock มันเป็นกุญแจสำคัญที่นิยมในการแมปไปCtrl, หรือEscMeta

เสียงเรียกเข้ามีตัวgUดำเนินการตัวพิมพ์ใหญ่หรือตัวเลือกดังนั้นคุณอาจพิมพ์ได้ตามปกติและใช้งานในภายหลัง ที่เกี่ยวข้องเพิ่มเติม: guเพื่อตัวพิมพ์เล็กและ~สลับ

นอกจากนี้ยังมีวิธีการเติมข้อความอัตโนมัติซึ่งอาจลดความต้องการในการพิมพ์ของVERY_LONG_MACRO_NAMESคุณ


4

ฉันทำการแมปใหม่ของฉันให้เป็น ctrl และแทบจะไม่เคยใช้ capslock อีกต่อไป อย่างไรก็ตามสำหรับกลุ่มถ้าฉันต้องการคุณมีtpope / vim-capslockเป็นซอฟต์แวร์ชั่วคราวสำหรับคุณ หากคุณใช้สิ่งนี้ควรจะตั้งค่า autocmd ง่าย ๆ สำหรับเหตุการณ์InsertLeaveและค่อนข้างจะปิดการใช้งาน capslock


3

ฉันพบวิธีปิดการล็อกตัวพิมพ์ใหญ่ในโหมดปกติโดยอัตโนมัติ (แม้ว่าจะใช้งานได้เฉพาะใน Linux)

โซลูชันที่สร้างด้วยปลั๊กอินไม่ได้พิจารณาว่าคุณสามารถเข้าสู่โหมดปกติได้มากกว่าหนึ่งวิธี (นั่นคือจากการแทรกเป็นปกติ) ตัวอย่างเช่นจากโหมดคำสั่ง

ที่จริงแล้วไม่มีเหตุการณ์การเติมข้อความอัตโนมัติที่เปิดใช้งานเมื่อเข้าสู่โหมดปกติดังนั้นเหตุการณ์ที่ฉันใช้แทนคือCursorHoldเหตุการณ์ซึ่งจะเปิดใช้งานเมื่อคุณไม่ได้พิมพ์ในโหมดปกติ

au CursorHold * call TurnOffCaps()
set updatetime=10

คุณตั้งค่าเวลาอัปเดตเป็นจำนวนน้อยมากดังนั้นจึงจะเปิดใช้งานเสมอก่อนที่คุณจะมีโอกาสพิมพ์อะไรก็ได้

function TurnOffCaps()  
    let capsState = matchstr(system('xset -q'), '00: Caps Lock:\s\+\zs\(on\|off\)\ze')
    if capsState == 'on'
        silent! execute ':!xdotool key Caps_Lock'
    endif
endfunction

ฉันคิดว่านี่เป็นคำตอบที่แท้จริงสำหรับคำถามเท่านั้น Vim จำเป็นต้องโทรไปที่ OS เพื่อเปลี่ยน CapsLock อย่างใด แน่นอนว่าสิ่งที่ทำจะขึ้นอยู่กับระบบปฏิบัติการ
Octaviour

2

อีกตัวเลือกหนึ่งคือการแมปของคุณไปCapsLock Escนี่คือแผนที่ที่ฉันใช้มาสองสามปีแล้ว: CapsLockอยู่ในแถวบ้านดังนั้นมันจึงใช้งานง่ายมากถ้าคุณแตะพิมพ์ นอกจากนี้ยังส่งเสริมการใช้งาน Vim ที่เหมาะสมเนื่องจากการออกจากโหมดแทรกง่ายกว่ามาก (คีย์ใกล้กว่าEsc)

มันง่ายที่จะทำการแมปใหม่: Linux รองรับสิ่งนี้ตามธรรมชาติมีแอปขนาดเล็กสำหรับ Mac OS X และ Windows เพื่อให้บรรลุผลนั้น และคีย์บอร์ดราคาแพงบางรุ่นก็มาพร้อมกับคุณสมบัติที่อนุญาตให้ทำการแมปปุ่ม


2

นอกเหนือจากคำตอบของ Avian Y จริงๆแล้วมีข้อความอัตโนมัติที่เปิดใช้งานโหมดแทรกอยู่:

au InsertLeave * call TurnOffCaps()

นั่นคือสิ่งที่ฉันกำลังมองหา ...


1

บนเครื่อง Apple ของฉันฉันใช้คุณลักษณะนี้โดยใช้Karabinerซึ่งทำงานได้ดีพอสมควร น่าเสียดายที่ 10.12 Karabiner พังและฉันไม่ได้ลองใช้งาน

ฉันเคยใช้ปุ่ม escape หรือปุ่มปิดการใช้งาน caps lock ถ้ามันถูกเปิดใช้งานมาก่อน

ดังนั้นเมื่อคุณใช้ macOS ใน 10.11 หรือต่ำกว่าคุณสามารถทำสิ่งนี้ได้อย่างแน่นอน (แม้ว่าจะไม่ถามฉันเกี่ยวกับการตั้งค่าฉันก็ไม่มีอีกต่อไป)

gUมิฉะนั้นฉันจะไปกับข้อเสนอแนะ (แม้ว่าฉันจะเข้าใจความคับข้องใจของคุณเกี่ยวกับการไม่สามารถใช้วิธีการเดียวกับที่คุณจะใช้ในโปรแกรมแก้ไขข้อความอื่น ๆ )


0

ในคู่มือช่วยเหลือกลุ่มมีการแมปที่ดีมากที่จะสร้างคำตัวพิมพ์ใหญ่ทั้งหมดในโหมดแทรก:

inoremap <c-h> <esc>gUiw`]a

มันใช้ctrl-hซึ่งโดยทั่วไปเป็นเพียงโคลน Backspace ดังนั้นคุณจะไม่สูญเสียอะไรกับการทำแผนที่นี้

Caps lock เป็นฝันร้ายเมื่อคุณอยู่ในโหมดปกติ! ฉันหวังว่าจะช่วย!

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