Ketika saya harus mengetik banyak teks, saya sering cenderung terus menekan jari shiftketika saya menulis huruf pertama dari sebuah kalimat yang sering memberi:
[...]end of sentence. NEw sentence[...]
Di sini E
dari NEw
harus huruf kecil. Saya kemudian mencoba untuk membuat fungsi yang akan mendeteksi jika huruf kedua dari kata pertama dari kalimat yang saya ketikkan adalah huruf besar dan yang akan huruf kecil. Bagian yang penting adalah bahwa koreksi harus dilakukan secara otomatis saat saya mengetik akhir kalimat saya.
Sejauh ini saya sudah mencoba bermain dengan event autocommand InsertCharPre
sebelum menyadari bahwa teks tidak dapat dimodifikasi oleh fungsi yang dipicu oleh event ini.
Apa solusi yang baik?
Perhatikan bahwa sejauh ini saya tidak perlu fokus pada kasus tepi seperti akronim yang harus dalam huruf besar atau hal-hal semacam ini.
EDIT Saya sudah membuat ini, yang merupakan solusi yang tidak sempurna:
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
Ini memiliki masalah karena karakter pertama yang saya masukkan dalam mode insert dipindahkan ke akhir baris, tetapi saya pikir itu dapat diperbaiki.
Saya kira sekarang pertanyaan saya menjadi pertanyaan ulasan kode :
- Bagaimana saya bisa menghilangkan efek samping yang menggerakkan karakter pertama yang dimasukkan?
- Apakah ini metode terbaik?
- Metode ini tampaknya memperlambat Vim: bagaimana bisa ditingkatkan?
<Space>
tampaknya cukup menarik karena mengurangi jumlah pemanggilan fungsi. Saya akan mencoba bekerja dengan cara ini juga!