vi [m] başka bir dosyadan satır aralığını okuma


9

Linux'ta file_Bvim'de düzenleme yapmak için 10-25 file_A. Satır eklemek istiyorum . Örnek: Birinde aynı başlığa sahip bir dizi HTML Belgesi var ve evet, bir şablon oluşturabilir ve oradan başlayabilir, ancak yine de:

Bir dosyadan satır aralığı eklemek ve şu anda düzenlemekte olduğum dosyaya eklemek için basit ve zarif bir yol arıyorum . Vim.

Şimdiye kadar bulduğum ama tam olarak aradığım çözümler değil

  • file_Bkomutun içinde:read file_A * tüm dosya_A * dosyasını dosya_B'ye ekleyecektir. Çok fazla
  • vim içinde kopyala yapıştır var - ama bunun için açılmış olmalı file_A
  • file_A içinde:10,25w! file_B verilen satır aralığı 'gönderilir' file_B.
    Kopyalama ve yapıştırma işlemlerine oldukça yakın görünüyor
  • biri vim içinde birden fazla pencere açabilir
    Ama 8 inç ekranda çalışırken, birden çok pencere yönlendirmeyi zorlaştırıyor

Rahat bir çözüm bulamadığım için, bir şeyi yanlış anladığımı veya şimdiye kadar bulduğum yolların yaygın olarak kullanıldığını ve standart yol olarak alındığını merak ediyorum.


Bu SO sorusuna bakın , @ Bernhard'ın yanıtı da bu soruya kabul edilen cevaptı!
slm

@slm Bu cevabın farkındaydım, ancak bulduğum çözümler listesine girmediğim için ipucu için teşekkür ederim. Hala içinde inşa edilmiş bir şey arıyorum vim. Ama bu ulaşılamayacak gibi görünüyor. Ve bunun sadece dış komutlarla gerçekleştirilip gerçekleştirilemeyeceğini gerçekten merak ediyorum, çünkü şimdiye kadar sahip olduğum kadarıyla vim, buraya kadar küçük kısıtlamalar getirdim.
erch

@ cellar.dweller Gerçekten daha kolay bir şey istiyorsanız, bir tür işlev yapabilirsiniz.
Bernhard

Yanıtlar:


11

Gelebileceğim en iyi çözüm, dışarıdan aramak sedve:read !

:r !sed -n -e '10,25p' fileB

Burada çalışmıyor - ama neden? İlk önce yardımın için teşekkürler. Ne alırım 'E34: önceki komut yok' [kabaca çevrilmiş] sanki vim bir komutu tekrarlamaya çalışıyormuş gibi. Anladığım kadarıyla, adım adım: vim :riçin kısadır read. sedNasıl kullanılacağı ve nasıl kullanılacağı hakkında bilgim yok . Tabii ki, fileBgerçek dosya ile değiştirdim :)
erch

@ cellar.dweller Cevabım bazıları tarafından güncellendi, bu kodla aynı hatayı aldım. Geri yuvarladım. Bunun sizin için uygun olup olmadığına bakın.
Bernhard

@Stephane Yanıtları kısaltmak güzel, ama öneriniz işe yaramadı.
Bernhard

Şimdi çalışıyor! Biraz myslef eklemek için: :10rvb. İle başlamak, onuncu satırdaki içeriği [bu olduğu sürece] yerleştirecektir. Şimdi bir cazibe gibi çalışıyor. Harika. Çok teşekkürler!
erch

2
Ayy üzgünüm. Vim'in genişlemesini unutma! Olmalıydı :r!sed 10,25\!d. -eTırnaklara veya tırnak işaretlerine ihtiyacınız olmadığını unutmayın , böylece :r!sed -n 10,25pkısaca yazabilirsiniz . :r sed '10,$\!d;25q'tüm dosyayı okumaktan kaçınmak için.
Stéphane Chazelas
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.