Bu soru sorulan ve cevap oldu bu yana uzun bir zaman oldu, ama ben arıyordum ve diğerlerinin hiçbiri tam olarak bu gibi çalışır biri çünkü benim kendi cevap katacak:
nnoremap vaf ?func.*\n*\s*{<cr>ma/{<cr>%mb`av`b
vmap af o<esc>kvaf
İlk haritalama, "fonksiyon etrafında Görsel" veya vaf
, {
aynı hat veya bir sonraki olduğunu ne olursa olsun, geri fonksiyon tanımının başlangıcına atlamak olacak ve Bir lambda fonksiyonu, ve görsel olarak desteğini biten ediyor it characterwise seçseniz bile. Bu PHP, Javascript ve Go çalışır.
Kullanıcı daha sonra o isterse seçim moduna linewise açmak için V tuşuna basabilirsiniz.
Ben buldum tek sorun olduğu zaman ben büyük bir işlevi vücutta değilim, ama bir lambda fonksiyonu (en "küçük" diyelim) kullanan bir çizgi altında, bu küçük fonksiyonun başında ararken durdurmak ve onun seçecek vücut yerine büyük işlevinin başlangıç ulaşan ve vücudun tüm seçin.
function show_video_server(v_server) {
// this whole function should get selected
var something = function(){ /* this function gets selected */ };
// | the cursor is here when I type "vaf"
}
Geçici bir çözüm olarak ben ikinci eşleme kullanın: vmap af o<esc>kvaf
. Bu seçim bir tekrarı veya genişleme gibi hissediyor. Gerçekten ne yapar seçimi terk ve ondan önce satırına gidin ve sonra agan bunu deneyin. "Büyük" fonksiyonu birkaç lambda fonksiyonlarını kullanır eğer kullanıcı büyük olanı ulaşmak için af
birkaç kez tekrarlamak zorunda.
Genellikle, vaf
Yeterince es. Bazen vaf af
ya da vaf af af
gereklidir. Her neyse, ben ne istediğini alabilir yakın, yani bu ben kullanıyorum sürümüdür.