Notepad ++ Executar linha atual no Prompt de Comando

2

Existe um comando similar que eu uso para abrir a palavra atualmente selecionada no prompt de comando:

cmd /D "%windir%/system32" /K ""$(CURRENT_WORD)""

Existe algum comando para abrir a linha atual sem selecionar manualmente qualquer texto nessa linha?

    
por TMRW 15.05.2012 / 02:20

1 resposta

1

Como executar um programa externo do Notepad ++ , nem a documentação de o plugin NppExec menciona uma variável de ambiente contendo a linha atual.

Da mesma forma, as macros só podem executar mensagens Scintilla ( lista ), pesquisa e substitui gravações e alguns comandos definidos do Notepad ++ (não documentados?), portanto não há como conseguir isso com macros.

Além de escrever seu próprio plug-in, apenas a I sabe como fazer isso usando um programa externo. Um script AutoHotkey fará o que você quiser.

Script do AutoHotkey:

^F5::
WinGetActiveTitle, Title
if RegExMatch(Title, "- Notepad\+\+$")
{
    SendPlay {Home}+{End}{F5}
    SendPlay cmd /D "%windir%/system32" /K "$(CURRENT_WORD)"
    SendPlay {Enter}
}
else
    SendPlay ^{F5}
return

O que faz:

  • Se o Notepad ++ for a janela ativa, a combinação de teclas Ctrl + F5 selecionará a linha atual e executará o comando externo

    cmd /D "%windir%/system32" /K ""$(CURRENT_WORD)""

    $(CURRENT_WORD) agora contém toda a linha, desde que foi selecionada. A única desvantagem é que você perderá a posição atual do cursor, pois o script deixará a linha atual selecionada.

  • Se o Notepad ++ não for a janela ativa, a combinação de teclas Ctrl + F5 se comportará normalmente.

Como usar:

  1. Faça o download e instale a versão mais recente.

  2. Salve o script acima como npp_runline.ahk , usando seu editor de texto favorito.

  3. Clique duas vezes no arquivo para executar o script.

  4. Se desejar, copie o script (ou um link para ele) na pasta Startup .

Como funciona:

  • ^F5:: especifica a tecla de atalho usada ( Ctrl + F5 ).

  • WinGetActiveTitle, Title armazena o título da janela ativa na variável Title .

  • RegExMatch(Title, "- Notepad\+\+$") retorna a posição da ocorrência mais à esquerda da expressão regular - Notepad\+\+$ (onde \+ é um literal + e $ no final da sequência) em Title ou zero se não há correspondência.

    • Se houver uma correspondência, o bloco seguinte if... será executado:

      • SendPlay {Home}+{End}{F5} simula pressionando Início e Deslocamento + Fim (selecionando a linha atual sem espaços em branco iniciais) e então F5 (abrindo o diálogo Run... ).

      • SendPlay cmd /D "%windir%/system32" /K "$(CURRENT_WORD)" insere exatamente isso no diálogo Run... .

      • SendPlay {Enter} simula pressionando Enter (finalizando o diálogo Run... ).

    • Se não houver correspondência, o bloco após else será executado:

      • SendPlay ^{F5} simula pressionando Ctrl + F5 (fallback se precisarmos do atalho fora do Notepad ++).
  • return termina a execução do script no ponto atual.

Veja também:

por 15.05.2012 / 04:41