Estou testando diferentes editores para possivelmente substituir o bloco de notas, algo leve, mas com recursos modernos de edição (como vários cursores). Eu usei o Notepad3 por muito tempo, não gosto do Notepad ++ e agora estou tentando o Atom. Eu gosto da experiência de edição do VSCode, então esperava algo semelhante.
Fiz a substituição pelo registro como de costume:
[HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe]
"Debugger"="\"C:\\Program Files\\Atom\\atom.exe\""
(não se importe com o caminho, eu queria uma instalação no nível do sistema)
Funciona na maioria das vezes, porém notei que tem problemas com arquivos contendo espaços. Ele trata cada blob como um nome de arquivo separado. Por exemplo, abrindo um arquivo com este caminho através do Windows Explorer:
C:\Program Files\Atom\test file.txt
Abre o átomo com o seguinte aberto:
C:\Program
C:\WINDOWS\system32\NOTEPAD.EXE
C:\Program Files\Atom\Files\Atom\test
C:\Program Files\Atom\file.txt
Isso obviamente não está certo. Abrir a partir da linha de comando funciona bem como seria de esperar.
Existe alguma configuração que eu poderia usar para fazer isso funcionar?
Depois de olhar para ele, parece que o atalho padrão para arquivos de texto para abrir o bloco de notas não cita o caminho do arquivo, aparentemente o bloco de notas permite isso e é capaz de abrir o arquivo conforme o esperado. Portanto, em vez de ter um argumento contendo o caminho, os argumentos são divididos usando as regras usuais de análise de argumentos. Eu tenho algumas opções aqui.
Eu poderia atualizar os valores do registro para citar o argumento do nome do arquivo:
[HKEY_CLASSES_ROOT\txtfile\shell\open\command]
A desvantagem é que eu teria que fazer isso para todas as extensões que usam o bloco de notas que também não cita.
Caso contrário, eu poderia criar um programa ou script para ler todos os argumentos e concatená-los em um único argumento e, em seguida, iniciar o átomo com o caminho construído.
Nota: Aprendi da maneira mais difícil que você deve sempre fornecer um título para o comando start no primeiro argumento, para garantir que o processo a ser executado não seja confundido com o título. Causou algumas bombas de garfo ruins na minha máquina que levaram algum tempo para descobrir.
edit: Depois de usar isso por um tempo, isso não era confiável o suficiente. Para uma solução rápida e geral, não funcionou em geral. E depois de mexer no registro para atualizar todos os valores que invocavam o bloco de notas para citar os argumentos, ainda não funcionou do jeito que eu queria.
Idealmente, haveria um aplicativo utilitário simples que coletaria os argumentos e os passaria para o aplicativo preferido da maneira padrão. Eu mesmo poderia codificá-lo, mas optei por usar algo específico para essa situação. Isso apenas se insere para substituir as chamadas do bloco de notas e encaminha para a substituição configurada. Pode ser algo que eu revisite um dia.
https://www.binaryfortress.com/NotepadReplacer/