Abra o aplicativo para editar arquivos de texto na linha de comando

9

Ao instalar o TextWrangler no OSX, você também recebe um editcomando que permite abrir qualquer arquivo de texto na linha de comando.

É possível ter uma funcionalidade semelhante no Ubuntu para digitar algum comando no terminal para abrir um arquivo em um editor de texto específico (por exemplo, Kate)?

Juan A. Navarro
fonte

Respostas:

11

Para abrir um arquivo usando kate, você pode executar algo como:

kate filename

Isso pode mostrar algumas mensagens como:

kate(3702)/kdecore (services) KMimeTypeFactory::parseMagic: Now parsing  "/usr/share/mime/magic"
kate(3702)/kdecore (services) KMimeTypeFactory::parseMagic: Now parsing  "/home/user/.local/share/mime/magic"
Bus::open: Can not get ibus-daemon's address. 
IBusInputContext::createInputContext: no connection to ibus-daemon

Para remover essas mensagens, redirecione o fluxo de saída de erro para /dev/null:

kate filename 2>/dev/null

Se você quiser continuar usando o mesmo terminal, adicione um &após o comando:

kate filename 2>/dev/null &

Se você deseja executar edit filenamepara abri-lo, pode criar uma função bash no seu ~/.bashrcarquivo. Adicione o próximo código ao seu ~/.bashrcarquivo:

edit() { kate "$@" 2>/dev/null & }
Lekensteyn
fonte
Isso se aproxima do que eu estava procurando. Obrigado por realmente executar os comandos e ver os problemas que surgiriam com as soluções mais óbvias. Acho que o que vou fazer é criar um novo comando que eu possa chamar apenas edit filenamepara executar o todo kate filename 2>/dev/null &.
31511 Juan Juan Navarro
1
@ Juan: Eu adicionei um exemplo para fazer isso. A $@é necessária em caso de necessidade de passar opções adicionais, como número da linha. Como alternativa, você pode ajustar essa função para dar suporte edit filename linenumber.
Lekensteyn
Você tem um erro na sua resposta e não consigo editá-lo. Você esqueceu as aspas $@(deve ser "$@"), o que significa que seu script falhará com os nomes de arquivos que contêm espaços.
11788 Scott Severance
18

Você pode abrir (até onde eu saiba) qualquer um dos editores como este:

NAME_OF_EDITOR FILENAME

gedit filename(Ubuntu)
kate filename(Kubuntu)
bluefish filename
kwrite filename
libreoffice filename

Você pode até abrir uma página da web da mesma maneira
firefox filename.html
chrome filename.html
banshee filename.oggou .mp3

Você pode ver a tendência aqui ..

Luis Alvarado
fonte
Na verdade, caso gedit filename &contrário, o terminal permanece inutilizável. O mesmo acontece com katemas, mesmo com &isso, torna o terminal inutilizável porque ele começa a cuspir informações de depuração (ou qualquer outra coisa) no terminal. Existe uma maneira de evitar isso &no final? Como faço com o editTextWrangler?
31511 Juan Juan Navarro
Deixa pra lá , a resposta de Lekensteyn é (pelo menos mais perto) do que eu estava procurando.
Juan A. Navarro
1
É verdade que você pode adicionar o & ou até 2> / dev / null a ele para não gerar erros e outras coisas no console, se quiser continuar usando.
Luis Alvarado
3

Se você preferir usar o comando editno Ubuntu também porque está acostumado a isso, também poderá definir um alias para o seu editor favorito como o Kate:

alias edit='kate'

Para tornar esse alias permanente, adicione esta linha a ~/.bash_aliases.

Takkat
fonte
2

Se você não possui nenhum ambiente gráfico e está executando no console, sempre pode usar:

vim foo.txt
nano bar.txt
pico foo.html
emacs bar.xml
...

e assim por diante volta à primeira resposta ..

topless
fonte
1
"emacs -nw" ou "xemacs -nw" se você quiser o VT100 (x) emacs mesmo dentro de um ambiente com janelas.
barrycarter
1

Você pode usar o comando CLI do editor desejado para abrir e editar arquivos. Por exemplo, geditno gnome ou kateno KDE.

Basta digitar:

kate filename

abrir arquivo no kate.

Pedram
fonte
1

Às vezes, uso um terminal clássico em que mcedit é o meu editor preferido e geralmente gosto de passar um número de linha para corrigir um programa / script.

Para chamá-los de maneira uniforme, edit source.sh 123escrevi este script, que coloquei como 'edit' no caminho:

#!/bin/bash
#   - edit a file using mcedit or gedit, depending on X11 or console invoking.
#   - jump to specified line, if any.

Xedit=/usr/bin/gedit

if [[ $TERM = "linux" ]]; then
    if [ $# -eq 1 ]; then
        mcedit $1
        else if [ $# -eq 2 ]; then
#           echo "edit invoked\t/usr/bin/mcedit +$2 $1" >> /tmp/edit.log
            /usr/bin/mcedit +$2 $1
            else if [ $# -eq 0 ]; then
                /usr/bin/mcedit
            fi
        fi
    fi
    else if [[ $TERM = "xterm" ]]; then
        # scheint nicht zu helfen
        # LANGUAGE=C
        export LC_ALL=C
        if [ $# -eq 1 ]; then
            $Xedit $1
            else if [ $# -eq 2 ]; then
#               echo "edit invoked\t/usr/bin/scite -open:$1 -goto:$2" >> /tmp/edit.log
                # $Xedit -open:$1 -goto:$2
                $Xedit +$2 $1 
                else if [ $# -eq 0 ]; then
                    $Xedit
                fi
            fi
        fi
    fi
fi

Use as instruções de depuração antigas de quando usei scite, não o gedit, como editor gráfico.

Algo, que não funciona dessa maneira, está abrindo vários arquivos como este:

 edit *.html

se houver mais de um arquivo html, o padrão será expandido para vários arquivos.

As invocações válidas são:

 edit 
 edit foofile 
 edit foofile 123

do X ou terminal.

Usuário desconhecido
fonte