Abra la aplicación para editar archivos de texto desde la línea de comando

9

Al instalar TextWrangler en OSX, también obtiene un editcomando que le permite abrir cualquier archivo de texto desde la línea de comandos.

¿Es posible tener una funcionalidad similar en Ubuntu para escribir algún comando en el terminal para abrir un archivo en un editor de texto específico (por ejemplo, Kate)?

Juan A. Navarro
fuente

Respuestas:

11

Para abrir un archivo usando kate, puede ejecutar algo como:

kate filename

Esto podría mostrar algunos mensajes 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 eliminar estos mensajes, redirija el flujo de salida de error a /dev/null:

kate filename 2>/dev/null

Si desea continuar usando el mismo terminal, agregue un &después del comando:

kate filename 2>/dev/null &

Si desea ejecutar edit filenamepara abrirlo, puede crear una función bash en su ~/.bashrcarchivo. Agregue el siguiente código a su ~/.bashrcarchivo:

edit() { kate "$@" 2>/dev/null & }
Lekensteyn
fuente
Esto se acerca a lo que estaba buscando. Gracias por ejecutar realmente los comandos y ver los problemas que surgirían con las soluciones más obvias. Supongo que lo que haré es crear un nuevo comando al que pueda llamar edit filenamepara ejecutar todo kate filename 2>/dev/null &.
Juan A. Navarro
1
@Juan: agregué un ejemplo para hacerlo. Se $@necesita en caso de que necesite pasar opciones adicionales como el número de línea. Como alternativa, puede ajustar esta función para que sea compatible edit filename linenumber.
Lekensteyn
Tienes un error en tu respuesta, y parece que no puedo editarlo. Olvidó las comillas $@(debería ser "$@"), lo que significa que su script fallará con los nombres de archivo que contienen espacios.
Scott Severance
18

Puede abrir (hasta mi conocimiento) cualquiera de los editores como este:

NAME_OF_EDITOR FILENAME

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

Incluso puede abrir una página web de la misma manera
firefox filename.html
chrome filename.html
banshee filename.oggo .mp3

Puedes ver la tendencia aquí ...

Luis Alvarado
fuente
En realidad debería ser de gedit filename &otra manera, el terminal permanece inutilizable. Lo mismo sucede con kate, pero, incluso con &esto, hace que el terminal sea inutilizable porque comienza a escupir información de depuración (o lo que sea) al terminal. ¿Hay alguna forma de evitarlo &al final? Como hago con editTextWrangler?
Juan A. Navarro
No importa , la respuesta de Lekensteyn es (al menos más cercana) a lo que estaba buscando.
Juan A. Navarro
1
Es cierto que puede agregar el & o incluso agregar 2> / dev / null para no generar errores y cosas en la consola si desea seguir usándolo.
Luis Alvarado
3

Si prefieres usar el comando editen Ubuntu también porque estás acostumbrado a hacerlo, también puedes definir un alias para tu editor favorito como para Kate:

alias edit='kate'

Para hacer que este alias sea permanente simplemente agregue esta línea a ~/.bash_aliases.

Takkat
fuente
2

Si no tiene ningún entorno gráfico y está ejecutando en la consola, siempre puede usar:

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

y así sucesivamente vuelve a la primera respuesta ...

top-less
fuente
1
"emacs -nw" o "xemacs -nw" si desea VT100 (x) emacs incluso dentro de un entorno con ventana.
barrycarter
1

Puede usar el comando CLI para el editor deseado para abrir y editar archivos, por ejemplo gediten gnome o kateen KDE.

Sólo tipo:

kate filename

abrir archivo en kate.

Pedram
fuente
1

A veces uso un terminal clásico donde mcedit es mi editor preferido, y a menudo me gusta pasar un número de línea, para corregir un programa / script.

Para llamarlos uniformemente edit source.sh 123, escribí este script, que coloqué como 'editar' en la ruta:

#!/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 las instrucciones de depuración anteriores de cuando usé scite, no gedit, como editor gráfico.

Algo, que no funciona de esta manera, está abriendo múltiples archivos como este:

 edit *.html

si hay más de un archivo html, entonces el patrón se expande a múltiples archivos.

Las invocaciones válidas son:

 edit 
 edit foofile 
 edit foofile 123

desde X o terminal.

usuario desconocido
fuente