Vim có thể tự động tắt Capslock khi trở về chế độ bình thường không?


12

Sau hầu hết mỗi lần tôi gõ một cái gì đó trong mũ, tôi quên tắt capslock khi trở về chế độ bình thường. Sau đó, tôi cố gắng di chuyển con trỏ và cuối cùng tham gia vào một loạt các dòng và rất nhiều điều khác mà tôi không mong đợi sẽ xảy ra.

Có thể cấu hình vim để tắt capslock khi tôi nhấn thoát để vào chế độ Bình thường không?

Nếu có các giải pháp dành riêng cho hệ điều hành, tôi quan tâm đến những giải pháp áp dụng cho Linux.


"giải pháp" của tôi cho vấn đề này là ánh xạ lại khóa mũ thành "không hành động" (macos) vì tôi không sử dụng nó trừ khi nhầm lẫn
localhostdotdev

Câu trả lời:


8

Các câu trả lời cho câu hỏi này cho thấy không có khả năng - Vim không có quyền truy cập vào HĐH để thực hiện cuộc gọi đó.

Tuy nhiên, bạn có thể thử thay đổi hành vi của mình để Caps Lock không bắt buộc. Đây là một chìa khóa phổ biến để ánh xạ tới Ctrl, Eschoặc Meta.

Vim có gUtoán tử viết hoa một lựa chọn hoặc chuyển động, vì vậy có lẽ bạn có thể gõ bình thường và sử dụng nó sau đó. Cũng có liên quan: guđể viết thường và ~chuyển đổi.

Cũng có những cách để tự động hoàn thành, có thể làm giảm nhu cầu nhập của bạn VERY_LONG_MACRO_NAMES.


4

Tôi đã ánh xạ lại capslock của mình thành ctrl và tôi hiếm khi sử dụng capslock nữa. Tuy nhiên, đối với vim nếu tôi cần, bạn có tpope / vim-capslock như một capslock tạm thời phần mềm cho bạn. Nếu bạn sử dụng điều này thì khá dễ dàng để thiết lập autocmd cho sự kiện InsertLeavevà vô hiệu hóa capslock.


3

Tôi đã tìm thấy một cách để tự động tắt khóa mũ ở chế độ bình thường (mặc dù nó chỉ hoạt động trong Linux).

Các giải pháp được thực hiện với các plugin không tính đến việc bạn có thể vào chế độ bình thường theo nhiều cách (nghĩa là từ chèn sang bình thường), ví dụ từ chế độ lệnh.

Thực tế không có sự kiện tự động nào kích hoạt khi vào chế độ bình thường, vì vậy sự kiện tôi sử dụng thay vào đó là CursorHoldsự kiện, sẽ kích hoạt khi bạn không gõ ở chế độ bình thường.

au CursorHold * call TurnOffCaps()
set updatetime=10

Bạn đặt thời gian cập nhật thành một số rất nhỏ, vì vậy nó sẽ luôn kích hoạt, trước khi bạn có cơ hội nhập bất cứ thứ gì.

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

Tôi nghĩ rằng đây là câu trả lời thực sự duy nhất cho câu hỏi. Vim cần thực hiện một cuộc gọi đến HĐH để bật CapsLock bằng cách nào đó. Tất nhiên làm thế nào được thực hiện sẽ phụ thuộc vào hệ điều hành.
Octaviour

2

Một lựa chọn khác là để remap của bạn CapsLockđể Esc. Đây là một bản đồ mà tôi đã sử dụng trong một vài năm nay: CapsLocknằm trên một hàng nhà, vì vậy nó thực sự dễ sử dụng nếu bạn chạm vào loại. Nó cũng thúc đẩy việc sử dụng Vim thích hợp, vì việc thoát khỏi chế độ chèn dễ dàng hơn nhiều (phím gần hơn Esc).

Thật dễ dàng để làm lại: Linux hỗ trợ điều này một cách tự nhiên, có những ứng dụng nhỏ cho Mac OS X và Windows để thực hiện điều đó. Và một số bàn phím đắt tiền thậm chí còn đi kèm với một tính năng cho phép ánh xạ lại các phím.


2

Ngoài câu trả lời của Avian Y, thực tế còn có chế độ tự động kích hoạt rời khỏi chế độ chèn:

au InsertLeave * call TurnOffCaps()

Đó cũng chính xác là thứ tôi đang tìm kiếm ...


1

Trên máy Apple của tôi, tôi thực sự đã triển khai tính năng này bằng Karabiner , hoạt động khá tốt. Thật không may, 10.12 đã phá vỡ Karabiner và tôi đã không thử thực hiện nó kể từ đó.

Tôi đã có nó bằng cách sử dụng phím thoát hoặc khóa enter bị vô hiệu hóa khóa mũ, nếu nó được bật trước đó.

Vì vậy, khi bạn đang sử dụng macOS vào ngày 10.11 trở xuống, bạn chắc chắn có thể làm điều này (mặc dù không hỏi tôi về cài đặt, tôi không có chúng nữa).

Nếu không tôi sẽ đi với đề nghị gU. (Mặc dù tôi có thể hiểu bạn bất bình, về việc không thể sử dụng cùng một phương pháp bạn sẽ sử dụng trong bất kỳ trình soạn thảo văn bản nào khác)


0

Trong hướng dẫn trợ giúp vim có ánh xạ khá đẹp để tạo một từ tất cả các chữ hoa trong chế độ chèn:

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

Nó sử dụng ctrl-h, thường chỉ là một bản sao backspace, vì vậy bạn không thực sự mất bất cứ thứ gì với ánh xạ này.

Caps lock là một cơn ác mộng khi bạn ở chế độ bình thường! Tôi hy vọng điều đó sẽ giúp!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.