Respostas:
Você poderia simplesmente substituir qualquer espaço consecutivo na linha com uma nova linha usando o comando :s/\s\+/\r/g
. \s\+
significa um ou mais caracteres de espaço em branco e \r
é uma nova linha, consulte :help :substitute
e :help regexp
para obter detalhes. Se você executar o comando em uma linha como:
foo bar baz
Você obtém:
foo
bar
baz
Se você hlsearch
ativou e não deseja encher a tela com espaços destacados em todos os lugares, você pode escrever uma pequena função como a seguinte para evitá-la:
function! SplitLineNicely()
" Save previous value of last search register
let saved_last_search_pattern = @/
" :substitute replaces the content of the search register with the `\s\+`
" pattern highlighting all whitespaces in the file
substitute /\s\+/\r/g
" Restore previous search register
let @/ = saved_last_search_pattern
endfunction
\r
, veja :help s/\r
. Pode ser substituído por uma digitação literal de nova linha <c-v><cr>
. Nesse contexto, \n
é um caractere nulo, veja :help s/\n
.
replaces the content of the register
- qual registro?
Usar vim
a substituição é provavelmente uma das melhores maneiras de realizar sua tarefa, mas você também pode usar uma macro. Suponha que tenhamos os seguintes dados, com o cursor em algum lugar na linha 1:
1 a b c d e f
~
Iniciando no modo normal, pressionar qqcomeçará a gravar uma macro que pode ser chamada via @q. Qualquer coisa digitada depois qqpode ser repetida através da chamada mencionada acima. Nosso objetivo é gravar comandos normais que serão gerais o suficiente para permitir repetições contínuas.
Assim, podemos digitar 0para trazer o cursor para o início da linha e depois fspacemovê-lo para o primeiro espaço. Isso nos permite digitar renter, resultando em:
1 a
2 b c d e f
~
Atingir qagora é uma boa ideia, pois nossa macro reutilizável está pronta para repetição. Um tanto arbitrariamente, notamos que existem 4 espaços restantes para substituir por novas linhas. Assim, pressionando, 4@qrepetimos a q
macro 4 vezes, resultando em:
1 a
2 b
3 c
4 d
5 e
6 f
~
Note-se que por causa da maneira como configurar o macro, teria sido seguro para repetir o comando mais de 9000 vezes, uma vez que só afetaria a linha atual, e uma vez que não havia espaços para a direita da última entrada de dados, fspaceserá 'bem' falham, impedindo que os dados sejam substituídos por novas linhas.
Então, para repetir desde o início:
qq0fspacerenterq9001@q
fornece o nosso resultado.
9001
tecla no teclado para digitar seu nome de usuário rapidamente.
A maneira mais fácil de dividir linhas no Vim é o comando do modo normal gq
(digite as duas letras em rápida sucessão no modo normal ou visual).
No modo visual, ele dividirá o que for selecionado; no modo normal, você seguirá gq
um movimento.
Por exemplo, gql
dividirá uma linha na largura definida no momento. Para definir a largura das linhas de divisão diferentes da sua configuração atual, você pode usar :set textwidth=n
, onde n
está o número de caracteres que deseja em uma linha, por exemplo, 10
e retornar à sua largura normal quando terminar.
Obtive essas informações de um vídeo do Youtube de Kholidfu que mostra como unir e dividir linhas no modo normal usando um movimento.