2012-04-30 15 views
7

Dosya kaydedildikten sonra yavaşça işlem yapmak için vim kullanıyorum, bu işlemler vim'in sıkışmasına izin verdi, bu yüzden bu operasyonların arka planda çalışmasını sağlamak için bazı asenkronizasyon yönteminin var olduğunu mu merak ediyorum?Vim senaryosunu senkronize et?

Demo:

autocmd BufWritePost *.js call DoSomeTing() 

function! DoSomeThing() 
    " some operations really slow 
endfunction 
+0

Genel bir async yöntemi olduğunu sanmıyorum. Ancak, istediğiniz şey harici bir işlem başlatmayı gerektiriyorsa (örneğin .js dosyasını yüklemek için ftp gibi) muhtemelen bunu uyumsuz bir şekilde başlatabilirsiniz. – Benj

+0

AFAIK Vim tek iş parçacıklıdır. "Tags" nesli gibi harici arka plan işlemlerini (dikkatle) çalıştırabilir, ancak Vim işlevlerini çalıştırabilirsiniz. – romainl

+0

@Benj @romainl Harici işlem neredeyse zor bir şekilde bazı vim komutlarını çağırmak için: 'lcd ' –

cevap

5

Sen yeni bir başlık açın ve içerideki işi yapmak için (örneğin Python gibi) daha güçlü dili bağları birini kullanabilirsiniz. Ancak bu, genellikle doğru bir şekilde yapılması gerçekten zor bir görevdir. Ayrıca, gerçekten herhangi bir vim yapısını değiştirmeye çalışmamalı veya diğer iş parçacıklarından herhangi bir vim işlevini çağırmamalısınız - vim çekirdeğindeki hiçbir şey iş parçacığı güvenli değil.

+0

Bu işe yarar mı? Desteklenen dillerden birinde kolayca yeni bir iş parçacığı oluşturacağınıza katılıyorum, ancak vim yine de o python/perl/ruby ​​işleminin dönmeden önce bitmesini bekleyecektir. Yani bunu işe almak için vim ve hizmetlerle eşzamanlı olmayan isteklere paralel olarak çalışan ayrı bir süreç oluşturmanız gerekir. – Benj

+1

İşlemin bitmesini bekleyen vim ile ne kastettiğinizden emin değilim - yeni bir süreç olmayacak, vim eğer + python ile derlenirse, vim içine gömülmüş bir dili kullanarak bir iş parçacığı oluşturmaktan bahsediyorum. –

+0

Vim + python ile derlenirse, bu bir python betiği bir vim işlevine gömüldüğünde, bu işlevin çalışması gerektiğinde bir python alt işleminin başlatıldığı anlamına gelir. Bu çocuk süreci (bence), vim işlevinin ömrü boyunca yaşayacaktır, python'da kaç tane iş parçacığı oluşturursanız olun, vim işlevi hala geri dönemez. – Benj