Estou prestes a adotar o Emacs para ser o único editor que uso em tudo o que estou escrevendo, incluindo documentos do LaTeX. Eu vim do editor WYSIWYG, que serviu bastante bem a esse propósito, a saber, o TexStudio ou o TXS. Para a transição do TXS para o Emacs, ainda estou faltando a maneira como o TXS lida com a execução de uma pesquisa massiva de consulta regexp e substitui por destacar as correspondências e restrições da pesquisa apenas para esses .tex
arquivos relacionados ao projeto . Sinto muita falta disso no Emacs agora. Veja uma captura de tela do TXS abaixo:
Consulta ao TeXStudio em um projeto LaTeX com vários arquivos
Gostaria de enfatizar os pontos no fluxo de trabalho a serem alcançados no Emacs:
- Pesquisa e Substituição de Consulta RegExp apenas nos
.tex
arquivos relacionados ao projeto . - Destacando as partidas
- Uma visão geral dos resultados destacados, todos juntos em um layout gerenciável (semelhante à visualização de log do
Magit
Emacs quando você pressional
seguido por outrol
ou simplesmente comoC-x d
no modo Dired - Como saber quantas correspondências de substituição ou inspeção são feitas ou permanecem e uma maneira de retomar a consulta, caso seja interrompida por um pressionamento de tecla desajeitado que interrompe a consulta
- Uma maneira limpa de sair dessa consulta bagunçada fechando e salvando todos os arquivos relacionados e retornando ao estado antes de chamar essa consulta
Eu li este post, mas minha intenção é ser mais parecido com CW
que qualquer pessoa possa compartilhar seu melhor fluxo de trabalho para realizar esse trabalho comum. Minha abordagem atual como segue:
Primeiro fluxo de trabalho
- O modo Dired
% g
marcará todos os arquivos que contêm essa regexp. Contras: isso inclui arquivos pares não relacionados ao projeto, incluindo arquivos que não são .tex. C-x 3
abre um novo buffer, mantendo um olho no primeiro buffer como minha visão geral da orientação de quais arquivos marcados eu tenho que consultar no novo buffer individualmente- Executando a consulta por
C-c q
. Possui opções muito agradáveis, como!
substituir tudo sem perguntar, além de destacar correspondências no arquivo aberto. Mas isso significa que eu tenho que executar a mesma consulta todas as vezes e para cada arquivo marcado. - Depois de fazer todos os arquivos marcados, apertei
C-x s !
para salvar tudo em um toque de tecla. Ufa!
Segundo fluxo de trabalho - preferencial
- Marcar todos os
.tex
arquivos usando% m
no modo Dired por regexp, a fim de marcar apenas.tex
arquivos, então, basicamente, a execução\.tex
me levará até lá. C-x 3
igual ao anterior para manter um buffer para visão geral e outro para consulta- A execução
Q
em Dired, que é consulta, substitui regexp apenas nos arquivos marcados . Como alternativa,A
é apenas a consulta de pesquisa regexp. Uma consulta completa será executada e um menu de ajuda?
será fornecido generosamente C-x s !
salve e feche toda a bagunça. Caso contrário, eu tive que fechar os arquivos abertos, um por um, o que é tedioso. Espero que exista uma maneira de fechar apenas aqueles que incomodamos.
Como aproximar a consulta de pesquisa / substituição de expressões regulares do TXS em vários arquivos?
Nota
- Emacs 24.4 no Windows 7
fonte
Respostas:
Se eu entendi corretamente, você deseja procurar padrões de texto no seu projeto, então você pode usar o Projectile junto com o Helm.
Aqui está uma demonstração de
helm-projectile-grep
:Você pode salvar em um buffer separado para consultar posteriormente usando a
Save results in grep buffer
ação` (você alterna para o buffer de ação usando TAB, por padrão).Se você não ouviu falar do Helm, pode ler meu tutorial do Helm . Visite o tutorial do Helm Projectile para obter mais demonstrações e orientações sobre o Helm Projectile.
Alternativa, você também pode usar
rgrep
, que é embutido:Search for:
prompt, ou seja, "teste"Search for "test" in file:
, ou seja*.tex
.rgrep
).Uma
rgrep
demonstração:Em relação aos seus critérios:
Helm e
rgrep
suportam esse recurso.O mesmo que acima.
O mesmo que acima.
Se você deseja substituir correspondências, pode usar o wgrep para realizar a substituição em um
*Grep*
buffer. Quando você terminar e sincronizar o*Grep*
buffer, tudo será substituído de acordo com o texto que você substituiu.Você "continua" executando a consulta novamente se você a interromper acidentalmente. Mas, ao usar o Helm, você tem um
helm-resume
comando que retoma a operação anterior, se você o cancelar acidentalmente.Na verdade, você não precisa matar nenhum buffer se usar ferramentas como o helm-mini . É fácil gerenciar milhares de buffers abertos: você pode restringir seus buffers desejados com um padrão de texto curto. Você pode matar tudo de uma vez, se quiser.
Aqui está uma demonstração de
helm-mini
:Veja a explicação detalhada na página Helm Github, na seção "Uso avançado" .
fonte
projectile
,helm
ehelm-projectile
é óbvio, o que mais? Além disso, existem dois pacotes MELPAhelm-pojectile
ehelm projectile-all
alguma recomendação aqui?Installation
seção em meus guias Helm e Helm Projectile.rgrep
para visitar as ocorrências de correspondência (para frente ou para trás) no buffer superior e inferior?Se eu entendi o que você quer, o RefTeX '
reftex-isearch-minor-mode
deve ser o que você procura . De sua descrição no manual:Conforme relatado por T. Verron, isso também funciona com regexps.
Para ativar esse modo secundário em todos os * buffer TeX, adicione uma das seguintes linhas ao seu arquivo init
fonte
M-r
o buffer de pesquisa alterna para regexp a pesquisa, assim como ocorre regularmenteisearch
.C-M-s
) também funciona.;-)
Caso você não saiba, é possível abrir o Dired apenas em um conjunto específico de arquivos (localizado em qualquer diretório, em qualquer lugar). IOW, você pode usar Dired como seu ponto de entrada para todos os arquivos de um projeto. Os recursos Dired usuais funcionam neste contexto: operando em arquivos marcados, etc.
Se você usar a biblioteca Bookmark + , poderá usar os favoritos direcionados para fornecer "visualizações" diferentes de diferentes conjuntos de arquivos, suas marcações, etc.
(O Emacs Wiki está em manutenção no momento e por mais alguns dias, para que o link fique temporariamente inacessível.)
fonte
C-x n n
? Você pode enriquecer sua resposta com mais detalhes. Obrigado.C-x n n
- apenas um recurso Dired pouco conhecido.C-h f dired
informa que você pode passar como argumento uma lista de nomes de arquivos (e absolutos) (e diretório) em vez de um nome de diretório. Essa é a chave. A Biblioteca Dired + facilita o uso interativo. (Mas, novamente, o wiki está em baixo temporariamente, de modo que apontam também não está disponível no momento.)