Existe uma maneira de excluir a nova linha no final de uma linha no Vim, para que a próxima linha seja anexada à linha atual?
Por exemplo:
Evaluator<T>():
_bestPos(){
}
Eu gostaria de colocar tudo isso em uma linha sem copiar e colar na linha anterior. Parece que eu devo colocar o cursor no final de cada linha, pressionar uma tecla e fazer com que a próxima linha pule na mesma linha em que o cursor está.
Resultado final:
Evaluator<T>(): _bestPos(){ }
Isso é possível no Vim?
Respostas:
Se você estiver na primeira linha, pressionar (maiúsculas) Junirá essa linha e a próxima linha, removendo a nova linha. Você também pode combinar isso com uma contagem, pressionando
3J
, as três linhas serão combinadas.fonte
gJ
evitará adicionar espaços que o Vim pode optar por adicionar ao usarJ
.V
(Modo de linha visual) e pressionarJ
ougJ
:join
e:join!
isso unirá as linhas mantendo a posição do cursor e não mantenha nenhum espaço no ponto de união. você também pode mapeá-lo como:nnoremap <Leader>j :joing<cr>
ennoremap <Leader>gj :join!<cr>
.Certamente. O Vim reconhece o caractere \ n como uma nova linha, para que você possa pesquisar e substituir. No modo de comando, digite:
fonte
V
bloco -ual e substituí-lo.Enquanto estiver na linha superior no modo normal, pressione Shift+ j.
Você também pode adicionar uma contagem antecipada, para que
3J
a linha superior junte todas essas linhas.fonte
Como outras respostas mencionadas, (maiúsculas)
J
e search + replace\n
podem ser usadas geralmente para remover caracteres de nova linha e concatenar linhas.Mas, para se livrar do caractere de nova linha à direita na última linha , você precisa fazer isso no Vim:
fonte
:set noendofline
que não funciona sembinary
?J
exclui o espaçamento inicial extra (se houver), unindo linhas com um único espaço. (Com algumas exceções: depois/[.!?]$/
, dois espaços podem ser inseridos; antes/^\s*)/
, nenhum espaço é inserido.)Se você não quer esse comportamento,
gJ
basta remover a nova linha e não faz nada de inteligente com espaços.fonte
Todos os seguintes pressupõem que o cursor está na primeira linha:
Usando mapeamentos normais:
3Shift+J
Usando comandos Ex:
Qual é uma abreviação de
Que também pode ser inserido pelo seguinte atalho:
3:j
Um comando Ex ainda mais curto:
fonte
:j!3
em seu .vimrc permitirá que você use
backspace
edelete
na\n
(nova linha) no modo de inserção.permitirá excluir o LF anterior no modo normal com
X
(quando na coluna 1).fonte
Provavelmente depende das suas configurações, mas geralmente faço isso com
A<delete>
Onde
A
é anexado no final da linha. Provavelmente requernocompatible
modo :)fonte
cursor na primeira linha
AGORA, no MODO NORMAL,
ou
: V2jJ normal
fonte
Eu apenas pressionava A (anexar ao final da linha, coloca você no modo de inserção) na linha em que você deseja remover a nova linha e, em seguida, pressione excluir.
fonte
:help 'backspace'
se você não se importa em usar outras ferramentas de shell,
fonte
ggVGJ
.O problema é que múltiplos caracteres 0A (\ n) invisíveis podem se acumular. Suponha que você queira limpar da linha 100 até o fim:
Digitando ESC e: (comandante do terminal)
Em um script vim:
Explicação: de 110 até o final, procure as linhas que começam com a nova linha (estão em branco) e remova-as
fonte