2012-12-10 24 views
5

Vim yapılandırmamda set formatoptions=c,q,a bulunur. Vim: "gq" Komutu için Sabit Yazma Komutu, ancak Kod Değil (arada boş satır olmasa bile)

" This is a long line which we would like to wrap. However, something sick is go|ing to happen if we hit "gqip" here! 
if has('win32') || has('win64') 
    set runtimepath^=~/.vim 
    set runtimepath+=~/.vim/after 
endif 

Şimdi gqip çarptı: Ben şu sorunu tamamen kızıyorum ( | imleç konumunu muhtemelen bu yorumladı hat konularda varlığını sadece gerçeği bildiği gibi, onun tam pozisyon önemli değil belirtir):

" This is a long line which we would like to wrap. However, something sick is 
" go|ing to happen if we hit "gqip" here! 
if has('win32') || has('win64') set runtimepath^=~/.vim set 
    runtimepath+=~/.vim/after endif 

Bu ne - aslında her şeyi tek bir paragraf olarak ele alıyor. (! Evet, boş bir çizgi ile ayrılarak bu davranışı önlediğini biliyorum, ama bu sorunu çözmez) Ben olmak istiyorum ne gerçekten de: Başka bir deyişle

" This is a long line which we would like to wrap. However, something sick is 
" go|ing to happen if we hit "gqip" here! 
if has('win32') || has('win64') 
    set runtimepath^=~/.vim 
    set runtimepath+=~/.vim/after 
endif 

, bu takdirde çok iyi olurdu gq bir şekilde kodu unutmuş ve sadece yorumlarla çalışabilir.

BONUS: nasıl tek seferde bütün tampon üzerine (bir yorum sadece sarma) bu biçimlendirmeyi yapmalı? Çünkü ideal olarak, bu şeyleri dosya kaydetme için özel bir formatlama kancasına taşımak istiyorum.

:g kullanarak yorumladı hatlar için

cevap

3

SameSyntaxMotion plugin ile, imlecin bulunduğu tüm yorum bloğunu temsil etmek için ay metin nesnesini kullanabilir ve gqay kullanarak yeniden biçimlendirebilirsiniz.

+0

Hasta adam, iyi iş, bu eklentiyi paylaştığın için teşekkürler. Sadece bir açıklama - patojen kullandığımdan beri 'vimball' paketleme nedeniyle yüklemek için biraz hantal. Ayrıca, çok daha iyi bir isim 'SyntaxGroupMotion' olacağını hissediyorum, o zaman ve daha sezgisel bulmak çok daha kolay olacaktır. Şimdi bir soru - 'y' ve 'Y' varsayılan eşlemesiyle iyi çalışıyor, ancak 'g' ve 'G' ("grup" anımsatıcısını izleyerek) 'yi yeniden denemeye çalıştım ve şanstan çıkmıştım. Buradaki numara nedir? –

+0

Ah, özür dilerim, bunu 'g' ile telafi ediyor. Sorun, bu 'nnoremap gwag' gibi birleşimi eşleştirmekti. Dikkatli olun, daha doğrusu bu 'nmap gwag' gibi eşleştirmeli, aksi takdirde eklentinin 'g' eşlemesini yakalayamaz. –

+0

Büyük bir eklenti çocuklar için Yaşasın! : D –

2

arayın, sonra wrap bu satırları:

:%g/^"/normal gq_ 
+0

kontrol edilecek şekilde davranmaya görünüyor ... ve bu komutu eşleştirin! – Ves

+0

Çözümünüz, tek tek satırları sararken, ana amaç ** paragraf ** 'i yorumlamaktır - ki bu daha geneldir.Diğer bir dezavantaj, VimL için yorum liderinin' kodlanmış 'kodlanmış olmasıdır. Herhangi bir programlama dili (veya en azından herhangi biri) için genel bir çözüm bulmak daha iyidir, ki bu da geçerli yorum liderini saklayan bir değişkene erişilebildiği takdirde basittir. Ben sadece değişkenin adı ve hiç olup olmadığını bilmiyorum. –

10

aslında

Eh, gqip, sen anlattın tek bir paragraf halinde her şeyi davranır ! Doğru hareketi seçmelisin. Bu tek bir satırda, gqq olur. 3 satır için gq2j. Sayılacak çok satır varsa, görsel modunu kullanın: Vjjjjjjgq.

+0

Bu, bu bağlamda karşı-sezgisel bir şeydir. Vim'in gerçekten bu durumda yapmasını istediğin şey, koddan boş satırlarla (üstte ve aşağıda) ayrılıp ayrılmadıklarına bakılmaksızın, çoklu paragraflar (aralarında boşluklar olmadan) kendi paragrafları olarak düşünmektir. Kod kod, yorumların yorumlarıdır. Her seferinde ne kadar yorum yazacağınızı saymak can sıkıcıdır ve hızlı bir aksiyon gibi görünse bile zamanın israfını kaybeder - zaman aslında sizin bildiğiniz birikir. Ayrılıktan bağımsız olarak Vim'i bir paragraf olarak ele almanın bir yolu var mı? –

+0

Ben gerçekten bu tür davranışlar için 'q' in formalar 'kutusundan çıkması bekleniyor, ancak bu durumda, büyük bir talihsizlik olduğunu düşünüyorum. –

+0

Başka bir şekilde, bahsettiğiniz gibi, doğru bir hareket sağlamaktır. Bir jenerikle (herhangi bir dilde yorum yapmak, muhtemelen mevcut yorum liderini gösteren bir değişken kullanarak) harekete geçebilir misiniz, böylece böyle bir yorum bloğu içerisindeyim (bu, bitişik yorumlanmış satır olmadığında). Bu bloğun * yukarısında *) ve bu bloğun sonuna kadar (bitişik yorumlanan satırın ** altında **) metin seçer. Bu gerçekten, hile yapmak. –

3

@IngoKarkat'ın işaret ettiği gibi ip metin nesnesinin anlamı oldukça dardır: yalnızca boş satırlarla sınırlanmış herhangi bir metin paragrafıdır.

Bu sorunu çözmek için kullanabileceğiniz bir eklenti de oluşturdum.

textobj-comment - Metin SameSyntaxMotion eklenti, komutları tanımlamak için filetype özgü 'comments' ayarına dayanır textobj-yorum ile tersine yorumlarla

için itiraz ediyor. Bu, sözdizimi vurgulama kapalıyken bile çalışması gerektiği anlamına gelir.

Bir yorumu biçimlendirmek için gqic kullanın.

İpucu: İmleç konumunu koruduğu için gw değerini gq üzerinde tercih edin.

+0

artı 1, patojen yükleme hatlarını dahil etmek için, onları kesebilir ve terminalime doğru yapıştırabilirim. güzelce, satırın sonunda asılı yorumlar bırakabilir ve ardından bu noktaya girebilir – Orwellophile

0

Partiye biraz geç kaldığımı biliyorum ama aynı soruyu kendim araştırırken bu soruyu buldum. Nasıl hakkında:..

seti formatprg = Fmt \ prefix = '\ "' o gqip ile

gerekli Kesinlikle SameSyntaxMotion eklentisi olsa