Função personalizada como "editar" no Midnight Commander

Função personalizada como "editar" no Midnight Commander

O problema

Estou usando o tmux e quero que o MC abra arquivos para edição em outra janela do tmux, para que eu possa continuar navegando nos arquivos durante a edição.

O que eu tentei

MC verifica se a variável EDITOR está definida e então a interpreta como um programa para edição, então se eu fizer export EDITOR=vimisso, MC usará o vim para abrir arquivos.

Eu tentei construir sobre isso:

function foo () { tmux new-window "vim $1"; }
export EDITOR=foo

Se eu fizer $EDITOR some_fileisso, abrirei o arquivo no vim em outras janelas do tmux - exatamente o que eu queria.

Infelizmente, quando tento editar no MC, ele fica em branco por um segundo e depois retorna à janela normal do MC. O MC parece não manter nenhum registro e não recebo nenhuma mensagem de erro.

As questões)

  • Você sabe o que estou fazendo de errado?
  • Você tem uma solução alternativa utilizável para o que eu quero?
  • Devo criar uma solicitação/bug de recurso para MC?

Responder1

Você está definindo uma função shell, que é desconhecida para mcquando está tentando iniciar o editor.

A maneira correta é criar um script bash, não uma função. Em seguida, defina EDITORum valor para ele, por exemplo:

$ cat ~/myEditor.sh
#!/bin/sh
tmux new-window "vim $1"

export EDITOR=~/myEditor.sh

Responder2

Você já pode navegar pelos arquivos durante a edição. O editor interno do MC é uma caixa de diálogo sem janela restrita. Basta pressionar Alt-Shift-[(e Alt-Shift-[) para alternar entre as caixas de diálogo (uma das quais é o navegador de arquivos).

informação relacionada