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.


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.


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.


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 :)


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.