Como você move o (s) cursor (s) para a próxima ocorrência de um caractere no Sublime Text?

5

Digamos que tenhamos um arquivo contendo isso:

name, job, age
Mark, Specialist, 24
Bob Guy, Manager, 43
Susan Third, Data Generation, 30

O que eu quero fazer é navegar pelos campos. Mover para o próximo campo, selecionar um campo, etc. Isso é feito facilmente no VIM procurando vírgulas (e supondo que não há vírgulas com escape); também é possível no Sublime Text? E de uma forma que funciona com vários cursores, digamos um no início de cada linha?

Pontos de bônus se você puder estendê-lo para passar para a próxima substring ou correspondência de expressão regular.

twhb
fonte
Você já resolveu isso?
Joost
@Joost Não. Como solução alternativa, às vezes isolo o texto no qual estou trabalhando (copiei e cole em um novo arquivo), coloque cursores com um regex, insira marcadores exclusivos como "XXX", faça minha edição e remova o texto marcadores e copie e cole de volta no arquivo original.
twhb

Respostas:

5

Em seu caso de uso específico, uma boa pesquisa para realizar para isolar cada valor seria \w[^,\n]+ - certifique-se de clicar no botão regex ou clique em Alt + R (Janelas) / Cmd + Opção + R (Mac) no campo de pesquisa.

Para navegar até a próxima partida, use F3 (Janelas) / Cmd + G (Mac). Mudança + F3 / Cmd + Mudança + G irá navegar para o jogo anterior. Você pode continuar fazendo isso depois de bater Esc para descartar o campo de pesquisa, e isso permitirá que você edite imediatamente a correspondência selecionada.

Infelizmente, não parece que o find-next possa coexistir com várias seleções - ele acaba destacando a primeira correspondência na última seleção. Você pode destacar várias linhas, dividir a seleção em linhas e usar Ctrl (Janelas) / Cmd (Mac) + ou flechas em algum grau, mas isso obviamente irá desmoronar quando alguns valores tiverem espaços.

Ken Franqueiro
fonte
Obrigado, isso é um bom sucesso para o problema, mas ainda espero encontrar uma maneira de trabalhar melhor com vários cursores. Vou votar isso assim que tiver a reputação.
twhb
4

Uma maneira de fazer isso é usar o modo vintage.

Edite suas preferências (por exemplo, Settings - User ) para não ignorar o pacote vintage (que está nas preferências padrão).

{
    "ignored_packages": []
}

Quando você tem múltiplos cursores, use o comando vim f seguido por um caractere para mover todos os cursores para o próximo encontro desse caractere. (Vejo https://stackoverflow.com/questions/12495442/what-do-the-f-and-t-commands-do-in-vim )

Infelizmente, estes só passam para os personagens na mesma linha e os cursores nas linhas sem esse caractere são deixados onde estavam localizados anteriormente. O comando de pesquisa / esquece seus múltiplos cursores.

Moberg
fonte
0
  • CTRL + UMA = & gt; selecione todo o arquivo
  • CTRL + MUDANÇA + eu = & gt; dividir a seleção em linhas
  • Casa = & gt; mova todas as seleções para o início da linha
  • ESC = & gt; entrar no modo de comando
  • f , , = & gt; encontre e mova cursores em cada linha até o primeiro ponto-e-vírgula (repita até chegar ao ponto que você está procurando)
  • Eu = & gt; entrar no modo de inserção

Tarefa concluída :)

Ronan Lamour
fonte
1
Qual é o modo de comando de que você fala?
Joost
Em Sublime Text, se você pressionar a tecla ESC, você entra em um "modo de comando". Então, você pode pressionar uma tecla como "f" para iniciar uma pesquisa. "vi" funciona de maneira semelhante.
Ronan Lamour