Texto sublime: encontre e substitua na seleção


21

O Sublime Text 2 permite ao usuário executar a busca e substituição, limitada à seleção atual?

Acho que sim, só que depois de várias pesquisas não consegui descobrir como realizá-lo.

Respostas:


23

Há um botão para isso no ST2.

Captura de tela


4
É verdade que existe um botão. Mas como você o usa? Em particular, como você define "a seleção"? Pela minha experiência, o ST2 usa a seleção a partir do momento em que você abriu a barra de pesquisa. Portanto, se a barra já estiver aberta, você deve fechá-la primeiro (Esc), selecione o intervalo de texto que deseja examinar e abra-o novamente (Ctrl + F ou Ctrl + H). Dica profissional: se a seleção se estender por várias linhas, ela não substituirá sua expressão de pesquisa atual.
Robert

3
Cmd + Opt + F no mac para abrir o console de localização e substituição.
Miquéias

2
Estou completamente confuso sobre o porquê de não haver atalho de teclado para esse "Na seleção", espacialmente, pois existe para todas as outras opções! Eu realmente tenho que mover minha mão para o mouse para permitir isso? Parece ir contra tudo ST representa ... (estou usando ST3)
TheStoryCoder

5
@TheStoryCoder sim, é idiota que isso não seja um atalho de teclado, mas acabou sendo fácil criar um, exceto que o nome do comando não foi documentado, mas tive sorte e adivinhei. Aqui está o código para adicionar às combinações de teclas do usuário: {"keys": ["alt + y"], "command": "toggle_in_selection", "context": [{"key": "setting.is_widget", "operator" : "igual", "operando": true}]},
Owen_R

Uma observação para outras pessoas que ficaram confusas como eu: quando você seleciona várias linhas de texto, pressione Ctrl + H (que abre Localizar e substituir) e começa a digitar no campo "Localizar", as linhas selecionadas deixam de parecer selecionadas, mas eles ainda são . Se não fosse por esse problema, eu nem teria procurado uma solução e encontrado esta postagem. BTW, eu me lembro que o problema não existia antes, então talvez após uma reinicialização ou algo do tipo desapareça.
21716 Stefan Monov

7

Se sua seleção incluir uma quebra de linha, o botão "dentro da seleção" será ativado automaticamente - no ST2

A ativação inteligente foi perdida no ST3, infelizmente. Você pode acompanhar isso aqui http://www.sublimetext.com/forum/viewtopic.php?f=3&t=11679


10
Agora é possível recuperar essa funcionalidade usando: "auto_find_in_selection": true
mdrozdziel 24/13

Como invoco-o automaticamente quando não inclui uma quebra de linha? Por exemplo, quando você tem uma linha realmente longa que abrange muitas "linhas"? Sempre que seleciono essa linha e invoco a pesquisa, ela desativa a opção "na seleção".
user2544542

6

Aqui está o que você precisa adicionar às suas combinações de teclas de usuário:

{ "keys": ["alt+y"], "command": "toggle_in_selection", "context":
    [
        { "key": "setting.is_widget", "operator": "equal", "operand": true }
    ]
},

Sim, é idiota que isso não seja um conjunto de teclas padrão.

Além disso, o nome do comando " toggle_in_selection" não foi documentado, mas adivinhei e tive sorte.


EDITAR PARA ADICIONAR:

/*
btw, the way i want to use find by default
(actually, i use replace by default, but same dif),
is for "in_selection" to be true by default,
*unless* the selection is empty.
(
the default is that "in_selection" is *false* by default,
unless the selection contains a newline.
)
i finally got around to digging up how to get that,
which is apparently by changing the *keybindings* you use to pop open the find(/replace) panel?
*/
    { "keys": ["ctrl+f"], "command": "show_panel", "args": {"panel": "replace", "in_selection": true}},
    { "keys": ["ctrl+f"], "command": "show_panel", "args": {"panel": "replace", "in_selection": false},
    "context":
        [
            { "key": "selection_empty", "operator": "equal", "operand": true}
        ]
    },

A combinação de teclas já existe por padrão.
elsadek

Hã. Pergunto-me por que eu estava perdendo, então ... as únicas coisas "alternadas" que eu tinha em minhas ligações padrão eram:toggle_side_bar toggle_full_screen toggle_distraction_free toggle_overwrite toggle_record_macro toggle_setting toggle_comment toggle_case_sensitive toggle_regex toggle_whole_word toggle_preserve_case
Owen_R 12/02/16

3

(com atalhos específicos do Mac OS X) para substituir some namepor new name:

  1. coloque o cursor acima do texto
  2. Localizar some name:, cmdfdigite some name(às vezes é necessário pressionar return)
  3. Especifique substituir: shiftcmdr, tabtabpara chegar a substituir campo, tipo new name, não carreguereturn
  4. repita altcmdeaté terminar.

Alguém sabe uma maneira mais rápida de fazer isso ?! É bastante ridículo e desnecessariamente difícil lembrar
AJP

ver @ oliver-g 's resposta - ST2 faz isso por padrão, e se você tiver desativado-lo, basta clicar ctrl+He deixou a 'Localizar o que:' há um botão titeled 'Na seleção'
Peter

2

Basta selecionar o texto que deseja pesquisar e clicar em Substituir no menu Localizar. Isso será feito automaticamente dentro da sua seleção.


0

a chave para trabalhar com substituir dentro da seleção é PRIMEIRO, selecione o texto e, em seguida, vá para encontrar> substituir , preencha o texto com o que você encontrará e substituirá, depois marque o botão com a ferramenta "na seleção" e clique em "Substituir tudo". ..


0

Estou adicionando outra resposta, já que a solução melhor e mais útil (na minha opinião) estava oculta em um comentário e quase senti falta (obrigado @mdrozdziel).

Selecione o texto que você deseja pesquisar, pressione Shift+ Hpara exibir a barra de ferramentas Localizar e substituir. Há um botão à direita do banco de botões à esquerda que ativará a pesquisa na seleção.

Esta é desligada por padrão no ST3 mas você pode configurá-lo para o padrão quando você selecionar mais de uma linha, acrescentando "auto_find_in_selection": trueao seu arquivo de preferência (encontrado introduzindo Alt, N, S, Enter).

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.