vi / vim, як я можу виписати ряд рядків у новий файл


Відповіді:


44

Ви можете зробити

:100,200w filename

Звичайно 100200 - це діапазон рядків, які ви хочете написати.


Є адреси включними чи ексклюзивними?
Марцін

3
Включно. Також включно, якщо ви використовуєте шаблони:: / ^ щось /, / ^ else / w ім'я файлу або знаки: 'a,' bw ім'я файлу включає рядки, позначені 'a' і 'b'.
Брюс Едігер

Привіт @ Berernhard, що робити, якщо я хочу вирізати рядки з поточного файлу.
Раві Севта

19

Найбільш загальне:

  1. Перемістіть курсор до першого рядка групи, яку потрібно записати. Хіт m і aпослідовність усіх. Це "встановлений знак з назвою" a "".

  2. Перемістіть курсор до останнього рядка групи, натисніть «m» та «b».

  3. Перейдіть до режиму командного удару: як послідовність, :'a,'b w filenameтоді натисніть клавішу return.

Це буде працювати у vi, nvi та vim.

Інший метод, який працює в більш сучасній версії:

  1. Поставте курсор на перший рядок групи ліній, які потрібно виписати. Натисніть V, для "запустіть візуальний блок рядків".

  2. Перемістіть курсор у нижню частину групи ліній. Vim виділить із зворотним відео кожний рядок.

  3. Виписувати. Натисніть, :щоб перейти в режим командного рядка. Це дасть вам підказку внизу екрана, що виглядає так: :'<,'> Це означає від початку візуального блоку до кінця. Введіть wі ім'я файлу та натисніть return.

Ви можете додати окремі рядки до кінця файлу, як вам потрібно, поставивши курсор на рядок, який ви хочете виписати, а потім набравши: :.w >> filenameі натиснувши клавішу return.

Команди "написати групу рядків" також працюють з ">> ім'ям файлу" замість просто "ім'я файлу". ">>" викликає додавання vi або vim до файлу, а не просто його запису.


8

Щоб додати відповідь Бернарда, ви також можете обрати область, використовуючи візуальний режим, а потім увійти :w filename.


8

Якщо вам відомі номери рядків, які ви хочете записати, це можна зробити з командного рядка:

vim -c "100,200w new_file.txt" -c wq original_file.txt

1

одна невелика хитрість - використання відносного номера рядка. Наприклад:: + 0, + 99w ім'я файлу запишіть наступні 100 рядків до імені файлу.


Хіба це не перезапише оригінальний файл? ОП хотів би записати в інший файл.
SabreWolfy

1
@SabreWolfy Ні; можливо ви пропустили "ім'я файлу" після номерів рядків. Я просто перевірив його версію, і вона спрацювала.
felwithe
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.