Apri l'applicazione per modificare i file di testo dalla riga di comando


9

Quando si installa TextWrangler in OSX, si ottiene anche un editcomando che consente di aprire qualsiasi file di testo dalla riga di comando.

È possibile avere una funzionalità simile in Ubuntu per digitare alcuni comandi sul terminale per aprire un file in un editor di testo specifico (ad esempio Kate)?

Risposte:


11

Per aprire un file usando kate, puoi eseguire qualcosa come:

kate filename

Questo potrebbe mostrare alcuni messaggi come:

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

Per rimuovere questi messaggi, reindirizzare il flusso di output dell'errore a /dev/null:

kate filename 2>/dev/null

Se si desidera continuare a utilizzare lo stesso terminale, aggiungere un &dopo il comando:

kate filename 2>/dev/null &

Se si desidera eseguire edit filenameper aprirlo, è possibile creare una funzione bash nel ~/.bashrcfile. Aggiungi il codice successivo al tuo ~/.bashrcfile:

edit() { kate "$@" 2>/dev/null & }

Questo si avvicina a quello che stavo cercando. Grazie per aver effettivamente eseguito i comandi e vedere i problemi che potrebbero sorgere con le soluzioni più ovvie. Immagino che quello che farò è creare un nuovo comando che posso semplicemente chiamare edit filenameper eseguire l'intero kate filename 2>/dev/null &.
Juan A. Navarro,

1
@Juan: ho aggiunto un esempio per farlo. Il $@è necessario nel caso in cui è necessario passare opzioni aggiuntive come il numero di riga. In alternativa, è possibile modificare questa funzione per supportare edit filename linenumber.
Lekensteyn,

Hai un bug nella tua risposta e non riesco a modificarlo. Hai dimenticato le virgolette $@(dovrebbe essere "$@"), il che significa che lo script non funzionerà con nomi di file che contengono spazi.
Scott Severance,

18

Puoi aprire (fino a mia conoscenza) uno qualsiasi degli editor in questo modo:

NAME_OF_EDITOR FILENAME

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

Puoi persino aprire una pagina web nello stesso modo
firefox filename.html
chrome filename.html
banshee filename.oggo .mp3

Puoi vedere la tendenza qui ..


In realtà dovrebbe essere gedit filename &altrimenti il ​​terminale rimane inutilizzabile. La stessa cosa accade con katema, anche con &ciò, rende il terminale inutilizzabile perché inizia a sputare informazioni di debug (o quant'altro) sul terminale. C'è un modo per evitare &la fine alla fine? Come faccio con editTextWrangler?
Juan A. Navarro,

Non importa, la risposta di Lekensteyn è (almeno più vicina) a quello che stavo cercando.
Juan A. Navarro,

1
È vero, puoi aggiungere & o persino aggiungere 2> / dev / null per non generare errori e cose nella console se vuoi continuare a usarlo.
Luis Alvarado,

3

Se preferisci usare il comando editin Ubuntu anche perché sei abituato a farlo, potresti anche definire un alias per il tuo editor preferito come per Kate:

alias edit='kate'

Per rendere permanente questo alias basta aggiungere questa riga a ~/.bash_aliases.


2

Se non disponi di alcun ambiente grafico e sei in esecuzione su console, puoi sempre utilizzare:

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

e così via ricade sulla prima risposta ..


1
"emacs -nw" o "xemacs -nw" se vuoi emacs VT100 (x) anche all'interno di un ambiente con finestre.
Barrycarter,

1

Puoi usare il comando CLI per l'editor desiderato per aprire e modificare i file, ad esempio geditin gnome o katein KDE.

Basta digitare:

kate filename

per aprire il file in kate.


1

A volte uso un terminale classico in cui mcedit è il mio editor preferito e spesso mi piace passare un numero di riga per correggere un programma / script.

Per chiamarli in modo uniforme edit source.sh 123ho scritto questo script, che ho inserito come "modifica" nel percorso:

#!/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

Usa le vecchie istruzioni di debug di quando ho usato scite, non gedit, come editor grafico.

Qualcosa, che non funziona in questo modo, è l'apertura di più file come questo:

 edit *.html

se è presente più di un file html, il modello viene espanso in più file.

Le invocazioni valide sono:

 edit 
 edit foofile 
 edit foofile 123

da X o terminale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.