Como definir novos comandos no gerenciador de arquivos ranger?

1

Gostaria de poder definir novos comandos no gerenciador de arquivos ranger digitando algo como:

:newcmd myarg

e execute código arbitrário com ele.

A definição de comando também deve ter acesso ao estado do programa, por exemplo, diretório atual e arquivos selecionados.

Existe uma maneira de fazer isso?

Aviso legal : criei esta pergunta e a auto-respondi devido à falta de boas fontes sobre esse assunto. Respostas adicionais são mais que bem-vindas.

    

1 resposta

1

Edite ~/.config/ranger/commands.py para conter algo como:

from ranger.api.commands import *

class newcmd(Command):
    def execute(self):
        if not self.arg(1):
            self.fm.notify('Wrong number of arguments', bad=True)
            return
        # First argument. 0 is the command name.
        self.fm.notify(self.arg(1))
        # Current directory to status line.
        self.fm.notify(self.fm.thisdir)
        # Run a shell command.
        self.fm.run(['touch', 'newfile')

Agora você pode digitar:

:newcmd myarg

para executar o comando definido.

Mais opções podem ser encontradas em: link

Você pode ir além e definir um mapa para ele, por exemplo: adicionar a ~/.config/ranger/rc.conf :

map ,n console newcmd
map ,m newcmd default-arg 

E agora você pode simplesmente digitar:

  • ,n para escrever newcmd na linha de status e prepare-se para o usuário inserir o primeiro argumento
  • ,m e execute o comando imediatamente com um argumento padrão

Testado no ranger 1.6.1.

    
por 04.03.2016 / 13:53

Tags