В 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 - Regex
  • Никакой синтаксической раскраски в vim для меня, но нормально для моих учеников
  • Цветовая схема VIM с соляризацией выглядит неправильно при использовании tmux
  • Добавьте последовательные числа с явным и элегантным индексом
  • Становление корня изнутри Vim
  • Sudoedit Vim force пишет (обновляет) без выхода
  • Как я могу увеличить каталоги по умолчанию в дереве дерева vim?
  • Быстрые клавиши 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 - лучшая ОС в мире.