Como preencho caminhos de arquivo no emacs?

14

Digamos, por exemplo, que estou editando um arquivo de configuração e quero digitar um caminho. Existe um plugin para o emacs que permite concluir um caminho de arquivo nesse buffer? Eu procurei por isso e existem vários plugins de conclusão por aí.

Jason Baker
fonte
1
Não sei ao certo o que você está perguntando aqui. O emacen moderno tem conclusão de caminho no mini-buffer (quando usado find-filepor exemplo). Deseja um comportamento semelhante em um buffer de conteúdo?
dmckee --- gatinho ex-moderador
1
@dmckee - Sim, é exatamente isso que estou procurando.
Jason Baker
@dmckee Este sistema operacional é específico? Eu tinha preenchimento de nome de arquivo em Localizar arquivo no ubuntu, mas não há conclusão no OSX. Por exemplo, tenho um arquivo chamado "reference" na raiz e estou no mini buffer: "Find file: ~ /" e digito "ref" e espero concluir, mas nada acontece. Preciso instalar alguma coisa?
Zeynel
O @Zeynel também funciona bem para mim no Mac OS. Com a versão instalada da Apple ou a versão homebrew. Também trabalhei com a versão do fink na minha máquina antiga.
dmckee --- gatinho ex-moderador
@dmckee Strange. Talvez eu faça uma nova pergunta. Obrigado.
Zeynel

Respostas:

10

Experimente o Hippie Expand , que como uma de suas possibilidades ' try-complete-file-name. Você pode alterar a ordem e a lista de funções de expansão que o hippie expand usará para favorecer a expansão do nome do arquivo.

Ou você pode até escrever um wrapper personalizado que apenas faça a expansão do nome do arquivo. Algo como:

(global-set-key (kbd "C-M-/") 'my-expand-file-name-at-point)
(defun my-expand-file-name-at-point ()
  "Use hippie-expand to expand the filename"
  (interactive)
  (let ((hippie-expand-try-functions-list '(try-complete-file-name-partially try-complete-file-name)))
    (call-interactively 'hippie-expand)))
Trey Jackson
fonte
14

Normalmente, digito Ctrl- X Ctrl- Fcomo abriria um arquivo, mas, em vez de pressionar RET, pressione Ctrl- A Ctrl- K Ctrl- Gpara copiar o caminho e colá-lo no buffer que estava editando com Ctrl- Y.

Não preciso disso com frequência suficiente, mas se realmente quisesse uma solução melhor, definitivamente usaria a solução de Trey Jackson hippie-expand. Pensei em como hippie-expandpoderia ser uma maneira melhor de fazer isso ao responder pela primeira vez, mas não sabia e estava com preguiça de procurar, então acabei de escrever o que faço.

Urso de pelúcia
fonte
Desajeitado e deselegante, mas trabalhando. Eu tenho que admitir fazer isso de vez em quando. Ainda estou interessado em uma solução mais limpa, embora ...
dmckee --- ex-moderador gatinho
De fato. Na verdade, não parece muito menos trabalho do que digitar manualmente.
Jason Baker
1
@ Jason Baker: Depende se você sabe o nome exato do arquivo ou se precisa explorar um pouco.
Teddy
6

A baunilha, pronta para uso

M-x comint-dynamic-complete-filename

funciona fora do modo de comint. Claro, você pode usar a expansão dinâmica do minibuffer usar menos teclas para chegar a ele (por exemplo, Mx comi nt- dy namic- c omplete -f ilename). Ou, se você o usar com frequência, poderá vinculá-lo a uma sequência de teclas de sua escolha usando global-set-key.

Ron Kaminsky
fonte
2

Também é possível fazer isso usando o preenchimento automático da empresa se ele company-filesestiver na lista de company-backends(padrão na minha instalação) ou explicitamente ligando company-files.

fikovnik
fonte
0

Descobri recentemente os trabalhos de Tomohiro Matsuyama (@ m2ym) e fiquei muito impressionado com a qualidade de seus pacotes emacs.

Eu lutei com a maioria das extensões de preenchimento automático e descobri que todas elas têm grandes falhas.

Confira o preenchimento automático do Tomo ( http://auto-complete.org/doc/manual.html ). Foi muito fácil de instalar (eu estou no Linux) e cobre muitas necessidades de preenchimento automático em um ambiente moderno. maneira .

Obviamente, sua solicitação para conclusão de nomes de arquivos no buffer é perfeitamente coberta.

Finalmente, se você também usa Ruby, não perca a extensão do RSense ; novamente, o melhor de seu tipo.

Arnaud Meuret
fonte
O link está quebrado
xuhdev 20/04/2015