Anexos rápidos com markdown

0

Eu tenho um documento como este:

A lot of text. 
insert:good graph:x
More text. insert: :y

Even more text. 

insert:another figure:z

Eu quero alterar todos os insert:description:x para ![description][A_Standardized_filepath/x.pdf] porque o comando ![][] anexará um arquivo ao meu documento markdown. Note que x é a variável que estou mudando e a descrição é única para cada variável. O caminho do arquivo, no entanto, é sempre o mesmo. (Observe que y não tinha descrição, o que resolvi adicionando um espaço.)

Isso me permitiria acelerar o processo de criação de documentos.

Estou no Windows 7; Eu prefiro usar o Notepad ++ para escrever.

    
por user1603548 09.11.2014 / 11:29

1 resposta

2

Eu não sei o notepad ++, mas se ele encontrar e substituir usando expressões regulares, você poderá adaptar isso. No vim, eu usaria:

:%s/insert:\([^:]*\):\([^ :]*\)/![][A_Standardized_filepath\/.pdf]/g

O % significa 'atuar em todas as linhas'; o s inicia o comando substitute ( s/change this/to this/ ), e o g no final significa 'atuar em todas as correspondências em uma linha' (em oposição a apenas a primeira correspondência, que é o comportamento padrão do vim).

A carne dele está na primeira parte. o \(\) indica grupos de captura; como o notepad ++ é relativamente novo, espero que você não precise das barras invertidas. Tudo entre o primeiro conjunto de \(\) é referido como no lado direito do comando (mais uma vez, isso pode ser diferente no notepad ++: perl usa $1 , por exemplo), tudo entre o segundo conjunto de \(\) é referido como no lado direito, etc.

[^:] significa 'qualquer caractere, exceto : ', enquanto [^ :] significa 'qualquer caractere, exceto espaço ou : '. Isso pressupõe que você nunca terá espaços na parte do nome do arquivo de sua construção.

Se alguém com conhecimento do notepad ++ aparecer, eles devem se sentir à vontade para canibalizar essa regex em uma resposta.

    
por 09.11.2014 / 12:34