Как скопировать строку ошибки и еще несколько строк в конец файла в vim?

#vim

#vim

Вопрос:

Я нахожу фатальные ошибки в своем журнале ansible и копирую их в конец файла, чтобы увидеть все фатальные ошибки.

 :g/fatal:/t$
  

Но я хотел бы скопировать ошибку и следующую строку, потому что следующая строка некоторое время будет «игнорировать», что не нужно учитывать. Я могу найти только реальные фатальные ошибки, которые требуются

Как переместить шаблон и еще несколько строк? В grep мы можем найти -A -B , есть ли какой-нибудь способ в команде g сделать это?

Ответ №1:

Как и все команды ex, унаследованные от vi and ex , :help :t может принимать a :help :range . В этом случае вы хотите работать с соответствующей строкой и строкой ниже, которая преобразуется в следующий диапазон:

 ., 1
  

где:

  • левая сторона запятой — это первая строка,
  • правая сторона — последняя строка,
  • . представляет текущую строку,
  • 1 представляет строку ниже текущей строки,

что дает вам эту команду:

 :g/fatal:/., 1t$
  

Обратите внимание, что . это подразумевается и является ярлыком для 1 , поэтому его можно сократить до:

 :g/fatal:/, t$
  

Ответ №2:

Редактировать: ответ @romainl строго лучше и должен быть предпочтительнее для того, что пытается сделать OP.

Если все, что вы пытаетесь сделать, это скопировать строку, содержащую «fatal:» и пару строк после этого, вы можете сделать:

/fatal:<CR>y<motion> , где <CR> есть Enterи <motion> может быть, например, 2j для «этой строки и следующей строки» или G для «от этой строки до конца файла» и т.д.