Pergunta

Eu uso Emacs para visualização e edição de código e outros arquivos de texto. Eu queria saber se existe uma maneira de pesquisar para a frente ou para trás para o texto que é marcado no buffer atual. À semelhança do que eu posso fazer no bloco de notas ou WordPad. Como em que posso marcar algum texto no buffer e fazer um C-s ou C-r e ser capaz de pesquisar com o texto marcado sem realmente digitando em todo o texto de pesquisa?

Obrigado,

Rohit

Foi útil?

Solução

Sim. M-W (para obter uma cópia do texto selecionado) C-s <RET> C-y <RET>. Então C-s repita conforme necessário. Da mesma forma para C-r.

Outras dicas

@Alex nails.

Outra opção que eu uso muitas vezes é C-s C-w para procurar a palavra após a marca atual. Bater C-w aumenta repetidamente a pesquisa com palavras adicionais (por exemplo, pesquisas C-s C-w C-w C-w para os 3 palavras após a marca atual).

Da mesma forma, pesquisas C-s M-s C-e para o resto da linha após a marca e C-s C-M-y atuais pesquisas para o personagem após a marca. Estes são os dois repetível da mesma forma (o primeiro por pouco-desajeitadamente repetindo M-s C-e após C-s).

Eu estou usando o seguinte, que não tem o problema de ter que digitar mais de uma sucessiva C-S para encontrar ocorrências posteriores:

    (defun search-selection (beg end)
      "search for selected text"
      (interactive "r")
      (kill-ring-save beg end)
      (isearch-mode t nil nil nil)
      (isearch-yank-pop)
    )
    (define-key global-map (kbd "<C-f3>") 'search-selection)

A desvantagem do código anterior é que o texto selecionado é copiado para o alongamento. O código a seguir não tem esse problema:

    (defun search-selection (beg end)
      "search for selected text"
      (interactive "r")
      (let (
            (selection (buffer-substring-no-properties beg end))
           )
        (deactivate-mark)
        (isearch-mode t nil nil nil)
        (isearch-yank-string selection)
      )
    )
    (define-key global-map (kbd "<C-f3>") 'search-selection)

Outras respostas descrevem como procurar texto copiado, ou como procurar a palavra no ponto. Mas nenhum deles realmente descrevem como "pesquisa com o texto marcado."

Ao adicionar o seguinte gancho vai fazer com que o texto atualmente selecionado é o texto usado para uma isearch:

(defun jrh-isearch-with-region ()
  "Use region as the isearch text."
  (when mark-active
    (let ((region (funcall region-extract-function nil)))
      (deactivate-mark)
      (isearch-push-state)
      (isearch-yank-string region))))

(add-hook 'isearch-mode-hook #'jrh-isearch-with-region)

Dica:. Este pares bem com expandir-região

A sequência de teclas mais curta de fazer isso é M - w C - s M -. y

Há uma grande função para isso: isearch-forward-symbol-at-point. Ele destaca todas as ocorrências da palavra onde o ponto está localizado - não há necessidade de colocar o ponto no início da palavra. Então você pode passar para a próxima ou anterior com C-s ou C-r.

Note que é uma correspondência exata:. Se você usá-lo em hi não irá corresponder chill por exemplo

Eu mapeada se a command-f (Mac OSX):. (global-set-key (kbd "s-f") 'isearch-forward-symbol-at-point) no arquivo init

As respostas acima (incluindo a aceita) são IMHO demasiado pesado. Eu encontrei a seguinte informação e como ela bem melhor:

“Ctrl + s Ctrl + w”. Isto irá procurar a palavra atual, mas você deve mover o cursor para o início da palavra em primeiro lugar.

http: // xah- forum.blogspot.com/2009/08/search-word-under-cursor-in-emacs.html

Você pode encontrar ajuda C-s, fazendo C-h k C-s, e ele diz:

Digite DEL para cancelar último item a entrada de final da cadeia de pesquisa. tipo RET Para sair, deixando ponto no local encontrado. Tipo LFD (C-j) para corresponder extremidade da linha. Tipo C-S para procurar novamente para a frente, C-r para procurar novamente para trás. Tipo C-w para arrancar próxima palavra ou caractere em tampão para o fim da cadeia de pesquisa, e procurar por ela. Digite C-M-w para apagar personagem de final da cadeia de pesquisa. Tipo C-M-y para carbonizar puxão de tampão no final do texto a procurar e procurar por ela. Tipo M-s-C e a puxão resto da linha na final do texto a procurar e procurar por ela. Tipo C-y para arrancar a última seqüência de texto morto. Tipo M-y para substituir corda apenas arrancou em busca tempo com corda morto antes dele. Tipo C-Q para citar carácter de controlo para procurá-lo. Digite C-x 8 RET para adicionar um caracteres para pesquisar por nome Unicode, com a conclusão. C-g enquanto pesquisar ou quando a pesquisa falhou cancela volta de entrada para o que tem foi encontrado com sucesso. C-g quando a pesquisa é aborts de sucesso e move-se apontar ao ponto de partida.

Se você tentar sair com a seqüência de pesquisa ainda está vazio, ele chama Pesquisa nonincremental.

Tipo M-c à pesquisa de alternância de maiúsculas e minúsculas. Tipo M-S i a alternância pesquisar no texto invisível. Tipo M-r para alternar o modo de expressão regular. Tipo M-S w para o modo palavra de alternância. Tipo M-S _ para alternar o modo de símbolos. Tipo M-s 'para dobrar caráter de alternância.

Tipo M-s SPC para alternar espaços em branco correspondente. Em pesquisas incrementais, um espaço ou espaços normalmente corresponde a qualquer espaço em branco definida pela variável ‘busca de espaço em branco-regexp’; ver também as variáveis ‘Isearch-lax-espaço em branco’ e ‘isearch-regexp-lax-espaço em branco’.

Tipo M-s e para editar a seqüência de pesquisa no minibuffer.

Também suportado é um anel de busca das 16 cadeias de pesquisa anteriores. Tipo M-n de pesquisa para o próximo item no ringue pesquisa. Tipo M-p para procurar o item anterior no ringue pesquisa. Tipo C-H-i completar a seqüência de pesquisa usando o anel de pesquisa.

Tipo M-% para run ‘consulta de substituir’ com corda para substituir de última seqüência de pesquisa. Digite% C-M- para executar ‘query-replace-regexp’ com a última seqüência de pesquisa. Digite M-s o a correr ‘ocorrer’, que mostra o último de busca corda. Tipo M-s h r para run ‘highlight-regexp’ que destaca a última string de pesquisa.

Tipo C-h b para exibir todas as teclas ISearch. Tipo C-h k para exibir documentação de chave ISearch. Tipo C-h m a documentação de exibição Modo ISearch.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top