No emacs, crio um arquivo visitando-o com Cx Cf. Digamos que eu gostaria de criar /home/myself/new_directory/file.txt
.
Se o new_directory ainda não existir, existe uma maneira de fazê-lo ser criado durante a criação file.txt
sem etapas adicionais? (Estou pensando em algo como usar a -p
bandeira mkdir
no Linux.)
Sinto que há um pressionamento de tecla diferente em vez de Cx Cf que pode fazer isso, mas não consigo me lembrar o que é.
:!mkdir -p ~/new_dir/to/some/crazy/path
M-!
por exemplo.Respostas:
Você também pode aconselhar a função
find-file
a criar transparentemente os diretórios necessários.Basta colocar isso no seu
.emacs
lugar e usar C-x C-fcomo de costume.fonte
defadvice
antes).Quando eu forneço um nome de caminho com um componente inexistente
find-file
(por exemplo , Cx Cf ), recebo uma mensagem extra dizendo:Como o arquivo não é criado até você salvar o buffer pela primeira vez, você pode executar
make-directory
logo após a instalação do novo buffer ou fazê-lo qualquer outra hora antes de salvar o arquivo. Em seguida, no buffer que precisa de um diretório, digite Mx make-directory RET RET (ele solicitará a criação do diretório (o padrão é derivado do nome do caminho do buffer); o segundo RET é aceitar o padrão).fonte
O modo Ido fornece
ido-find-file
uma substituiçãofind-file
e oferece muito mais recursos. Por exemplo, ele permite que você crie um novo diretório enquanto abre o arquivo.Digite C-x C-fcomo de costume (que é remapeado para
ido-find-file
),fornecer o caminho inexistente,
pressione M-mque solicitará a criação do novo diretório,
e especifique o nome do arquivo a ser visitado no diretório recém-criado.
fonte
M-m
em algum momento eC-x C-f
se isso não cria tudo automaticamente? Se a ser solicitado para o diretório para criar,M-! mkdir
ou dired vai fazer um bom trabalho também ...ido-find-file
criar automaticamente o diretório? Ou melhor ainda, pergunte-me se eu quero criá-lo? Eu tentei usar o conselho na resposta de Török Gábor, mas eu não conseguia descobrir qual função para aplicá-lo ao (como ido não está ligandofind-file
diretamente.Minha solução vem com um bônus: se você matar o buffer sem salvá-lo, o Emacs oferecerá a exclusão dos diretórios vazios que foram criados (mas apenas se eles não existissem antes de você invocar
find-file
):Versão canônica aqui .
fonte
Além da sugestão do @Chris de Mx make-directory, você pode escrever uma função elisp curta que fará o find-file e depois o make-directory ... Você pode tentar o seguinte:
Não é bonito e exibe o "diretório de criação MX ...." antes de dizer "Criando diretório ...", mas se nada mais, isso deve lhe dar um começo.
fonte
find-file
função original em vez de definir uma nova, para que outras funções que chamamfind-file
diretamente possam se beneficiar do comportamento modificado.Se os seus diretórios já existirem, apenas será emitido um aviso.
No
C-h f make-directory RET
manual ( ):fonte