2010-06-13 13 views
186

set textwidth (Vim 80 column layout concerns gibi) kullanarak vim içindeki metnin genişliğini otomatik olarak ayarlamanın yolları olduğunu biliyorum. Aradığım şey, = (girintili satır komutu) ile benzer bir şeydir, ancak 80'e sarılır. Kullanım durumu bazen metinleri metin genişliğiyle düzenler ve satırları birleştirdikten veya metinleri sildikten/ekledikten sonra zayıf bir şekilde sarılır.vim komutu metni 80 sütun olarak yeniden yapılandırma/zorlama

İdeal olarak, bu komut kısa olanlara eklerken uzun çizgileri seçip çıkardığım çizgileri tamamen yeniden düzenler. Bir örnek:

long line is long! 
short 

komutu çalıştırdıktan sonra (varsayarak sarma 13 cols idi): Bu gerçek bir vim komutuyla mümkün değilse

long line is 
long! short 

, belki bir komut satırı programı vardır Bu girişi girdiler mi? Evde veya gg-Ctrl ile yapılabilir http://www.cs.swarthmore.edu/help/vim/reformatting.html

+6

Ayrıca, Vim'in metin formatlamasını [par] (http://www.nicemice.net/par/) gibi harici bir programa devredebileceğini öğrenmek de ilginizi çekebilir. [Ile metin formatlama] nasıl yapılacağını gösteren bir screencast yaptım (http://vimcasts.org/e/18). – nelstrom

+0

@nelstrom teşekkürler, "par" hakkında TIL. O fantastik! –

+1

Metnin ince ve ince görünmesini istediğinizde (iyi kesilmiş?), Her zaman “gq” - [Gentleman's Quarterly] (http://www.gq.com/) düşünün. (Antropomorfik erkek için özür dilerim, ama anımsatıcı işler.) – ruffin

cevap

297

Set textwidth 80 (:set textwidth=80) için, (dosyanın başlangıcına taşıyın:

arama yaptıktan sonra biraz daha seçenek vardır bu referans buldum) ve gqG yazın. Metni geçerli konumdan ve dosyanın sonuna kadar biçimlendiren

gqG. Mümkün olduğunda otomatik olarak ardışık satırlara katılacaktır. Bu ikisinin birlikte birleştirilmesini istemiyorsanız iki satır arasına boş bir satır yerleştirebilirsiniz.

+44

FYI: 'gqq' mevcut satırı formatlar. –

+7

Ayrıca görsel seçimlerle de çalışır. Bir şey gibi: V} gq'. Bu şekilde, biçimlendirmeden önce biçimlendireceğiniz şeyleri görürsünüz. – Plouff

+3

Bu arada, tam olarak ne q '' '' '' '? – RichouHunter

77

Michael'ın çözümü anahtardır, ancak çoğu zaman geçerli paragrafının geri kalanını yeniden biçimlendirmek istiyorum; Bu davranış için gq} kullanın.

+13

genişleyen - istediğiniz gibi biçimlendirmek için gq kullanabilirsiniz. –

+0

Ayrıca, satırların bir cümleyle birleştirilmesi sırasında iki alanın görünmesini engelleyen 'nojoinspaces' seçeneği. Yazım stiliniz İngilizce cümleler arasında tek boşluk olduğunda iyi. –

30

gq'u herhangi bir hareket operatörü ile kullanabilirsiniz. Örneğin, yalnızca geçerli satırın sonuna (örneğin, imlecinizin bulunduğu satırı sarmalamak) yeniden biçimlendirmek isterseniz, gq$

Görsel modda metin seçerek de yeniden biçimlendirebilirsiniz. ve hareketli) ve ardından gq yazarak.

Satırların da sarılmasını zorlamak için başka seçenekler de vardır. bunun yerine metni yeniden yapılandırmaya sonuna kadar beklemek zorunda kalmadan dosyaların içindeki metin ekleme yaparken sizin Satırları kaydırmak için vim istiyorsanız

, kullanışlı bu seçenekleri bulabilirsiniz:

:set textwidth=80 
:set wrapmargin=2 

(Don' t sadece ekranda görüntülenen metni yeniden biçimlendirmek ve bir olmayan Vim yol arıyorsanız tampon metni)

+5

wrapmargin'den yardım: 'textwidth' sıfır olmadığı zaman bu seçenek kullanılmaz. – mmoya

10

değişmez, hangi yan izlenen wrap ve linebreak almak, her zaman var UNIX, fmt vekomutlarını verir..

Notlar: Ben Unicode yorum yapamam

  • , bu veya farklı davranabilir veya [email protected], kendi web sitesinde par numaralı telefonu kullanmayı belirtmiştir.

Örnek olarak her ikisini de nasıl kullanırız.

:%! fmt -w 13 
:%! par 13gr 

Ayrıca par veya fmt için :formatprg ayarlayabilir ve gq geçersiz:
$ echo -e 'long line is long!\nshort' > 3033423.txt 
$ cat 3033423.txt 
long line is long! 
short 
$ fmt -w 13 3033423.txt 
long line is 
long! short 
$ par 13gr 3033423.txt 
long line is 
long! short 

Vim içinden kullanın. Daha fazla bilgi için, Vim'in içinde :help formatprg'u arayın.

:%!fold -w 60

: DonaldSmith gelen bir yoruma

10

sayesinde ben metin benim uzun çizgisini yeniden biçimlendirmek vermedi textwidth seçenek olarak (ben onaltılık-to-byte dönüşüm ile oynayan dönüştürme oldu), bu bulundu Bu, tüm dosya (benim için bir çizgi oldu) 60. satırlara dönüştürüldü.

+0

Bu çok güzel.Tüm cevaplar, bir satır boşlukları sözcüklere böldüğünde bir çizginin genişliğini sınırlamaya odaklanır. Bu çözüm çok uzun kelimeler (DNA dizileri) için çalışır. – pedrosaurio

5

Hemen her zaman gq görsel modunda kullanıyorum. Öğrencilerime "Gentlemens 'Quarterly", titiz insanlar için bir dergi anlamına geldiğini söylüyorum.