Khi tôi phải gõ nhiều văn bản, tôi thường có xu hướng giữ ngón tay của mình shiftkhi tôi viết chữ cái đầu tiên của câu thường đưa ra:
[...]end of sentence. NEw sentence[...]
Ở đây, E
trong NEw
nên chữ thường. Sau đó tôi đang cố gắng tạo một chức năng sẽ phát hiện nếu chữ cái thứ hai của từ đầu tiên của câu tôi đang gõ là chữ hoa và chữ thường sẽ viết thường. Phần quan trọng là việc sửa lỗi sẽ được thực hiện tự động trong khi tôi đang gõ cuối câu.
Cho đến nay tôi đã thử chơi với sự kiện tự động InsertCharPre
trước khi nhận ra rằng văn bản không thể được sửa đổi bởi một chức năng được kích hoạt bởi sự kiện này.
Điều gì sẽ là một giải pháp tốt?
Lưu ý rằng cho đến nay tôi không cần phải tập trung vào các trường hợp cạnh như các từ viết tắt nên viết hoa hoặc loại này.
EDIT Tôi đã thực hiện điều này, đó là một cách giải quyết không hoàn hảo:
autocmd CursorMovedI * call RemoveUnwantedUpper()
function! RemoveUnwantedUpper()
" Get the current sentence
" Based on http://stackoverflow.com/a/23315227/4194289
let l:save_clipboard = &clipboard
set clipboard= " Avoid clobbering the selection and clipboard registers.
let l:save_reg = getreg('"')
let l:save_regmode = getregtype('"')
normal! y(
normal! ``
let l:sentence =getreg('"')
call setreg('"', l:save_reg, l:save_regmode)
let &clipboard = l:save_clipboard
" Check that we entered a new word (space inserted)
if l:sentence[len(l:sentence)-1] != " "
return
endif
" Check if the word is the first one of the sentence
let l:size = len(split(l:sentence, " "))
if l:size > 1
return
endif
" If the last char entered is a space (new word) remove the unwanted Upper case
normal! bl
normal! vu
normal! ``
endfunction
Nó có vấn đề vì ký tự đầu tiên tôi nhập trong chế độ chèn được di chuyển đến cuối dòng, nhưng tôi nghĩ điều đó có thể được sửa.
Tôi đoán bây giờ câu hỏi của tôi trở thành một câu hỏi đánh giá mã :
- Làm thế nào tôi có thể thoát khỏi hiệu ứng phụ di chuyển ký tự đầu tiên được chèn?
- Đây có phải là phương pháp tốt nhất có thể?
- Phương pháp này dường như làm chậm Vim: làm thế nào để cải thiện nó?
<Space>
có vẻ khá thú vị vì nó làm giảm số lượng các lệnh. Tôi cũng sẽ cố gắng làm việc theo cách này!