Çok fazla metin yazmam gerektiğinde shift, genellikle bir cümlenin ilk harfini yazarken parmağımı basılı tutmaya eğilimliyim :
[...]end of sentence. NEw sentence[...]
İşte E
bir NEw
küçük harf olmalıdır. Daha sonra yazdığım cümlenin ilk sözcüğünün ikinci harfinin büyük ve küçük harf olacağını belirleyen bir işlev oluşturmaya çalışıyorum. Önemli olan, cümlenin sonunu yazarken düzeltmenin otomatik olarak yapılmasıdır.
Şimdiye kadar InsertCharPre
metnin bu olay tarafından tetiklenen bir işlevle değiştirilemeyeceğini fark etmeden önce autocommand olayıyla oynamayı denedim .
İyi bir çözüm ne olurdu?
Not şimdiye kadar ben büyük harf veya şeylerin bu tür olmalıdır kısaltmalar gibi kenarları durumlarda odaklanmak gerek kalmayacak.
EDIT Mükemmel olmayan bir çözüm olan bunu yaptım:
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
Ekleme moduna girdiğim ilk karakter satırın sonuna taşındığı için bir sorunu var, ama bence bu düzeltilebilir.
Sanırım şimdi sorum kod inceleme sorusu haline geliyor :
- Eklenen ilk karakteri hareket ettiren yan etkiden nasıl kurtulabilirim?
- Mümkün olan en iyi yöntem mi?
- Bu yöntem Vim'i yavaşlatıyor gibi görünüyor: nasıl geliştirilebilir?
<Space>
, işlevlerin çağrılma sayısını azalttığı için oldukça ilginç görünüyor. Ben de bu şekilde çalışmaya çalışacağım!