2009-08-22 13 views
10

Bir veya daha fazla satırın sonunda bir karakteri tekrar tekrar ekleyerek satırları belirli bir sütuna ekleyebilir miyim? ÖrneğinVim: bir karakterle satırların doldurulması

:
('x' sütun 40 hattı üzerinde, bir karakteri temsil eder ve herhangi bir boşluk karakteri metinden sonra orada)

line one        x 
line two        x 
line three        x 
line eleventy-billion     x 

line one ------------------------------x 
line two ------------------------------x 
line three ----------------------------x 
line eleventy-billion -----------------x 

cevap

18

olur \=, submatch() ve repeat():

+0

+1 O şeyi okudum ve 'işe yaramayacak' diye düşündüm ama eminim ki ... – bmb

+0

O_o. Tam olarak beklediğim üç tuş vuruşu çözümü değil;) Çoğunlukla burada yaptığınız şeyi alıyorum, ama başlangıçta ne yapıyor? Ayrıca, neden bu sözdizimini yürütmek sözdizimi renklendirir? Bir regex'in başlangıcında –

+3

\ v tüm noktalama işaretlerini özel yapar; Bunu alışkanlıktan yapıyorum, bu yüzden neyin özel ve neyin olmadığını hatırlamak zorunda değilim. Ekstra tire geçersiz sözdizimi olmadıkça sözdizimi vurgulama yapılmamalıdır? Ekranı yeniden çizmek için ctrl-L'yi deneyin. – Eevee

2

Gelecekte bu durumun önüne geçen herkes için, 'u kullanmanın alternatif bir yolunu kullanıyorum (ki bence), bazı satırları elle çizmesi gereken nadir durumlarda hatırlamak daha kolaydır.

Girdi Metin:

Here are some words 
They do not have equal length 
I want to insert characters after them until column 40 
How to do? 

Yazdıklarınızı:

gg    // Position cursor anywhere on first line you want to pad 
q1$40A-<Esc>d40|q // Looks more complex than it is. 
        // Here, in English: 
        // 1. Record a macro in slot 1 
        // 2. Go to the end of the line, then *A*ppend a '-' 40 times 
        // 3. Delete from cursor position (which is still at the end of the line) to column 40 
        // 4. Stop recording 
:1,4normal @1  // Repeat macro "1" for every line 

Çıktı Metin:

Here are some words----------------- 
They do not have equal length------- 
I want to insert characters after t- 
How to do?-------------------------- 

Umarım komuta çeşitli parçalarını ayarlamak için nasıl anlamaya Tam olarak ne istediğini yap. Not istediğiniz sütun uzunluğundan daha uzun olan metin kesilecektir (3. satırda gösterilmiştir).