vi [m] читати діапазон рядків з іншого файлу


9

У Linux, редагуючи file_Bvim, я хочу додати рядок 10-25 від file_A. Приклад: В одному є цілий набір HTML-документів із цілком однаковим заголовком, і так, можна створити шаблон і почати звідти, але все-таки:

Я шукаю простий [і елегантний] спосіб вставити діапазон рядків з одного файлу і додати його до файла, який я зараз редагую. У вим.

Я знайшов рішення, яке я поки що шукав, але не є саме тим , що я шукаю

  • всередині file_B команди :read file_Aдодасть * весь файл_A * у файл_B. Забагато
  • всередині vim є копія та вставка - але для цього вона повинна бути відкрита file_A
  • всередині file_A :10,25w! file_B'надішле' заданий діапазон рядків до file_B.
    Це здається досить близьким для копіювання та вставки
  • можна відкрити кілька вікон у vim.
    Але, оскільки я працюю на екрані 8 дюймів, кілька вікон ускладнюють орієнтацію

Оскільки я не зміг знайти зручне рішення, мені цікаво, чи просто я щось неправильно зрозумів, або способи, які я знайшов поки що, зазвичай використовуються та приймаються як стандартний спосіб.


Дивіться це ТАКЕ питання , відповідь @ Бернхарда була прийнятою відповіддю на це питання і там!
slm

@slm мені була відома ця відповідь, але, оскільки я не вніс її до списку знайдених нами рішень, дякую за підказку. Я все ще шукаю щось побудоване всередині vim. Але це здається недосяжним. І мені дуже цікаво, чи можна цього досягти лише за допомогою зовнішніх команд, тому що, наскільки я vimзараз дійшов, я до цього часу дійшов невеликих обмежень.
erch

@ cellar.dweller Ви можете зробити з нього якусь функцію, якщо хочете щось простіше.
Бернхард

Відповіді:


11

Найкраще рішення, яке я можу придумати, - це зателефонувати зовнішньо sedі поєднати це:read !

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

Тут не працює - але чому? По-перше, дякую за допомогу. Що я отримую - це "E34: жодна попередня команда" [грубо перекладено], ніби vim намагається повторити команду. Наскільки я це розумію, крок за кроком: :rце скорочення readin vim. Я не знаю про sedте, як і як ним користуватися. Звичайно, я замінив fileBфактичний файл :)
erch

@ cellar.dweller Мою відповідь хтось оновив, я отримав ту саму помилку за цим кодом. Я повернув її назад. Подивіться, чи працює це для вас.
Бернхард

@Stephane Добре скоротити відповіді, але ваша пропозиція не спрацювала.
Бернхард

Тепер це працює! Щоб додати трохи myslef: починаючи з :10retc., розміщуватимете вміст з десятого рядка на [доки це існує]. Зараз працює як шарм. Чудово. Дуже дякую!
erch

2
На жаль, вибачте. Забув про розширення Vim !. Треба було :r!sed 10,25\!d. Зверніть увагу, що вам -eабо котирування не потрібні , тому ви також можете їх написати :r!sed -n 10,25pкоротко. :r sed '10,$\!d;25q'щоб не читати весь файл.
Стефан Шазелас
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.