GNU/Linux >> Znalost Linux >  >> Linux

Jak se připojit k dalšímu řádku, když řádek odpovídá regulárnímu výrazu pro celý dokument ve VI?

Mám řádky jako

abcdefgjoin!
abcdef
no join
abcdefgjoin!

Pokud řádek odpovídá regulárnímu výrazu ^a.+g$ pak bych chtěl, aby se spojili, takže by to bylo:

abcdefgjoin!
abcdef
no join
abcdefgjoin!

Existuje způsob, jak to udělat ve VIM ?

Přijatá odpověď:

V normálním režimu J (na rozdíl od j , který přesune kurzor o jeden řádek dolů) se používá ke spojení řádku s řádkem přímo pod ním. Ve výchozím nastavení však přidá na konec prvního řádku mezeru; abyste získali požadovaný výsledek (spojení řádků bez vložení další mezery), museli byste použít gJ .

Chcete-li použít příkazy normálního režimu v ex-režimu (které zadáte stisknutím : v normálním režimu), musíte použít normal příkaz. Viz :h normal uvnitř vim. Chcete-li tedy pracovat s dalším řádkem, který odpovídá vzoru, jeden by použil (všimněte si, že ve výchozím nastavení musíte znak + ukončit aby to fungovalo s regulárním výrazem vim, což je důsledek zachování kompatibility se starodávným motorem regulárních výrazů původního vi):

:/^a.\+g$/normal gJ

Chcete-li pracovat na vždy řádek, který odpovídá vzoru, použijete :global příkaz (viz :h :g v rámci vim) takto:

:global/^a.\+g$/normal gJ

Nebo stručněji:

:g/^a.\+g$/norm gJ

Je také možné použít ex příkaz join (viz :h :join ), abyste dosáhli stejné věci s o něco méně psaním (! na konci v tomto případě říká join nevkládat mezeru na konec prvního řádku).

:g/^a.\+g$/join!

Linux
  1. Jak vytvořit databázi v MySQL pomocí příkazového řádku

  2. Jak změnit výchozí délku čáry pro Od a Hexdump?

  3. Jak vytvořit komprimovaný tar, když je příliš mnoho názvů souborů na to, aby se shell rozbalil na jednom řádku?

  1. Jak zadat přihlašovací údaje pro web z příkazového řádku linuxu

  2. Jak získám svou IP adresu z příkazového řádku?

  3. Jak zjistím číslo řádku v Bash, když došlo k chybě?

  1. 8 tipů pro příkazový řádek Linuxu

  2. Bash tipy pro každý den na příkazovém řádku

  3. Jak udělat sudo zapamatovat si heslo déle