Як vi / vim, як я можу додати файл, замість того, щоб перезаписати його?


11

Я знаю, що можу записати у файл, просто зробивши це :w <file>. Хотілося б знати, хоча я можу записати у файл, додавши до нього замість того, щоб перезаписати його.

Приклад використання випадку: Я хочу взяти деякі зразки з файлу журналу в інший файл. Для цього сьогодні я можу зробити:

  1. Відкрийте файл журналу
  2. Виберіть рядки за допомогою Shift+v
  3. Запишіть у файл: :w /tmp/samples
  4. Виберіть ще кілька рядків за допомогою Shift+v
  5. Додати до /tmp/samplesс:w !cat - >> /foo/samples

На жаль, крок 5 - довгий, некрасивий та схильний до помилок (відсутність символу a >дозволяє втратити дані). Я сподіваюся, що у Віма є щось краще.


3
Якщо вам цікавіше краще використовувати Vim, замовте на веб-сайті сестри Vi та Vim .
муру

Відповіді:


26

Від :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.

Отже, якщо ви вибрали текст у візуальному режимі, просто зробіть :w >> /foo/samples( :'<,'>буде автоматично попередньо). Якщо ви пропустите а >, Vim поскаржиться:

E494: Use w or w>>

Це ідеально :) Нічого, як читати документи. Не знав, :hхоча. Використовуватимуть його більше
Бруно Полако

1
@BrunoPolaco :h- це просто скорочення :help. Почати з :help helphelp? : D
muru

0

Визначте функцію:

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

Виклик функції:

call App('/foo/samples')
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.