В vi / vim, как добавить в файл вместо его записи?

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

Пример использования: я хочу взять некоторые образцы из файла журнала в другой файл. Чтобы достичь этого сегодня, я могу сделать:

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

К сожалению, шаг 5 длинный, уродливый и подверженный ошибкам (отсутствует a > заставляет вас потерять данные). Надеюсь, у Вима есть что-то получше.

  • Как изменить слово, которое нужно склонить в vim?
  • Две разные версии VIM
  • Выделите дополнительные пробелы и столбцы фиксированной длины в VIM
  • Включить NumLock при запуске?
  • Удалите большие куски из json, используя vim
  • Удалив vim-minimal, я удалил sudo
  • SED Показывает CRLF, пока Vim не показывает
  • Как я могу потянуть переменную env в отображение ключей VIM?
  • 2 Solutions collect form web for “В vi / vim, как добавить в файл вместо его записи?”

    От :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 ( :'<,'> будет автоматически добавляться). Если вы пропустите V > , Vim будет жаловаться:

     E494: Use w or w>> 

    Определить функцию:

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

    Вызвать функцию:

     call App('/foo/samples') 
    Linux и Unix - лучшая ОС в мире.