Vi / vim'de bir dosyanın üzerine yazmak yerine nasıl eklerim?


11

Bir dosyaya sadece yazarak yazabileceğimi biliyorum :w <file>. Bir dosyanın üzerine yazmak yerine ekleyerek nasıl bir dosyaya yazabileceğimi bilmek istiyorum.

Örnek kullanım örneği: Bazı örnekleri bir günlük dosyasından başka bir dosyaya almak istiyorum. Bugün bunu başarmak için şunları yapabilirim:

  1. Günlük dosyasını açın
  2. Şununla bazı satırlar seçin: Shift+v
  3. Bir dosyaya yazın: :w /tmp/samples
  4. İle daha fazla satır seçin Shift+v
  5. Ekleme için /tmp/samplesbirlikte:w !cat - >> /foo/samples

Maalesef 5. adım uzun, çirkin ve hataya açıktır (eksik bir >veri kaybetmenize neden olur). Umarım Vim'in burada daha iyi bir şeyleri vardır.


3
Vim'i daha iyi kullanmakla ilgileniyorsanız, Vi ve Vim kardeş sitesi yapın .
muru

Yanıtlar:


26

Gönderen :h :w:

                                                :w_a :write_a E494
:[range]w[rite][!] [++opt] >>
                        Append the specified lines to the current file.

:[range]w[rite][!] [++opt] >> {file}
                        Append the specified lines to {file}.  '!' forces the
                        write even if file does not exist.

Yani, metni görsel modu kullanarak seçtiyseniz, sadece yapın :w >> /foo/samples( :'<,'>otomatik olarak eklenir). Eğer bir kaçırırsanız >, Vim şikayet edecek:

E494: Use w or w>>

Bu mükemmel :) Belgeleri okumak gibi bir şey yok. :hGerçi bilmiyordum . Daha fazla kullanacak
Bruno Polaco

1
@ BrunoPolaco :hsadece kısayol içindir :help. Başlamak :help helphelp? : D
muru

0

Bir işlev tanımlayın:

fun! App(filename)
    exec "w !cat - >> " . shellescape(a:filename)
endfunc

Bir işlevi çağırın:

call App('/foo/samples')
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.