Eu tenho duas linhas em um arquivo de texto como abaixo:
S<Switch_ID>_F<File type>
_ID<ID number>_T<date+time>_O<Original File name>.DAT
Quero acrescentar as duas linhas no vi, como abaixo:
S<Switch_ID>_F<File type>_ID<ID number>_T<date+time>_O<Original File name>.DAT
A segunda linha foi excluída e o conteúdo da segunda linha foi anexado à primeira linha.
Como eu poderia fazer isso usando o modo de comando no vi?
GJ
invim
passará para a última linha e tentará associá-lo à próxima linha, o único lugar em que um comando de junção não faz sentido. Sim, eu achei isso engraçado :-)Vi ou Vim?
De qualquer forma, o comando a seguir funciona para o Vim no modo 'nocompatível'. Isso é, suponho, quase puro vi.
Se você quiser fazê-lo a partir do comando normal, use
Com 'gJ', você une as linhas como estão - sem adicionar ou remover espaços em branco:
Resultado:
Com o comando 'J' você terá:
Observe o espaço entre
type>
e_ID
.fonte
g/pattern/join
funciona no VIM enquantog/pattern/J
não funciona. Pode ajudar algumas pessoas no futuro.Isso deve servir:
J
fonte
:h J
ele lhe dirá como desativar esse recurso.gJ
se você não quiser vim para adicionar um espaço ao juntar as linhasNo vi,
J
(isso é Shift+ J) ou:join
deve fazer o que você deseja, na maior parte. Observe que eles ajustam o espaço em branco. Em particular, você acabará com um espaço entre as duas linhas unidas em muitos casos, e se a segunda linha for recuada, esse recuo será removido antes da união.No Vim, você também pode usar
gJ
( G, então Shift+ J) ou:join!
. Eles unirão linhas sem fazer nenhum ajuste de espaço em branco.No Vim, consulte
:help J
para obter mais informações.fonte
gJ
eJ
é que ambos mudam o cursor para o ponto de união, mas:join!
e:join
não.Apenas substitua o "
\n
" por "".No vi / Vim para cada linha do documento:
Se você deseja confirmar cada substituição:
fonte
Se você deseja unir as linhas selecionadas (você está no modo visual), basta pressionar
gJ
para unir suas linhas sem espaços.Isso é descrito em mais detalhes no site do vi / Vim Stack Exchange .
fonte
Pressione Shift+ 4("$") na primeira linha e, em seguida, Shift+ j("J").
E se você quiser ajuda, entre no vi e pressione F1.
fonte
No Vim você também pode usar
gJ
.ََ
fonte
Outra maneira de unir duas linhas sem colocar o cursor nessa linha é:
Aqui 6 é o número da linha à qual outra linha será unida. Para exibir o número da linha, use
:set nu
.Se estivermos no cursor onde a próxima linha deve ser unida, então:
Em ambos os casos não precisamos
g
gostar:s#\n##g
, porque em uma linha única\n
existir.fonte
Shift+V
para selecionar todas as linhas que serão unidas, exceto a última, e,:'<,'>s/\n/, /
neste exemplo, unir linhas enquanto coloca uma vírgula e um espaço no final de cada uma. Observe que, quando algo é selecionado e digitamos:
no modo normal, ele'<,'>
aparece automaticamente na linha de comando.