Otwórz aplikację do edycji plików tekstowych z wiersza poleceń


9

Podczas instalacji TextWrangler w OSX otrzymujesz również editpolecenie, które pozwala otworzyć dowolny plik tekstowy z wiersza poleceń.

Czy można mieć podobną funkcjonalność w Ubuntu, aby wpisać jakieś polecenie na terminalu, aby otworzyć plik w określonym edytorze tekstów (powiedzmy Kate)?

Odpowiedzi:


11

Aby otworzyć plik za pomocą kate, możesz uruchomić coś takiego:

kate filename

Może to pokazywać niektóre wiadomości, takie jak:

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

Aby usunąć te komunikaty, przekieruj strumień wyjściowy błędu do /dev/null:

kate filename 2>/dev/null

Jeśli chcesz kontynuować korzystanie z tego samego terminala, dodaj &polecenie po:

kate filename 2>/dev/null &

Jeśli chcesz uruchomić, edit filenameaby go otworzyć, możesz utworzyć funkcję bash w swoim ~/.bashrcpliku. Dodaj następny kod do swojego ~/.bashrcpliku:

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

To zbliża się do tego, czego szukałem. Dzięki za uruchomienie komend i zobaczenie problemów, które pojawiłyby się przy najbardziej oczywistych rozwiązaniach. Chyba utworzę nowe polecenie, które mogę po prostu wywołać, edit filenameaby uruchomić całość kate filename 2>/dev/null &.
Juan A. Navarro,

1
@Juan: Dodałem przykład tego. Jest $@to potrzebne na wypadek, gdybyś musiał przekazać dodatkowe opcje, takie jak numer linii. Alternatywnie możesz dostosować tę funkcję do obsługi edit filename linenumber.
Lekensteyn,

Masz błąd w odpowiedzi i nie mogę go edytować. Zapomniałeś cytatów wokół $@(powinno być "$@"), co oznacza, że ​​twój skrypt zawiedzie z nazwami plików, które zawierają spacje.
Scott Severance,

18

Możesz otworzyć (według mojej wiedzy) dowolny z takich edytorów:

NAME_OF_EDITOR FILENAME

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

Możesz nawet otworzyć stronę internetową w ten sam sposób
firefox filename.html
chrome filename.html
banshee filename.ogglub .mp3

Tutaj widać tendencję ...


W rzeczywistości powinno być gedit filename &inaczej terminal pozostanie bezużyteczny. To samo dzieje się z, kateale nawet z tym &sprawia, że ​​terminal jest bezużyteczny, ponieważ zaczyna wypluwać informacje debugowania (lub cokolwiek) do terminala. Czy jest jakiś sposób na uniknięcie tego &w końcu? Jak robię z editTextWrangler?
Juan A. Navarro,

Nieważne, odpowiedź Lekensteyn jest (przynajmniej bliższa) temu, czego szukałem.
Juan A. Navarro,

1
To prawda, że ​​możesz dodać & lub nawet dodać 2> / dev / null , aby nie wyświetlać błędów i innych rzeczy w konsoli, jeśli chcesz nadal z niego korzystać.
Luis Alvarado,

3

Jeśli wolisz używać polecenia editw Ubuntu również dlatego, że jesteś do tego przyzwyczajony, możesz także zdefiniować alias dla swojego ulubionego edytora, np. Dla Kate:

alias edit='kate'

Aby ten alias był stały, wystarczy dodać ten wiersz do ~/.bash_aliases.


2

Jeśli nie masz żadnego środowiska graficznego i działasz na konsoli, zawsze możesz użyć:

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

i tak dalej wraca do pierwszej odpowiedzi ...


1
„emacs -nw” lub „xemacs -nw”, jeśli chcesz emac VT100 (x) nawet w środowisku okienkowym.
barrycarter

1

Możesz użyć komendy CLI dla wybranego edytora, aby otwierać i edytować pliki, na przykład geditw gnome lub katew KDE.

Po prostu wpisz:

kate filename

otworzyć plik w Kate.


1

Czasami używam klasycznego terminalu, w którym mój preferowany edytor to mcedit, i często lubię podawać numer linii, aby poprawić program / skrypt.

Aby jednolicie je nazwać edit source.sh 123, napisałem ten skrypt, który umieściłem jako „edytuj” na ścieżce:

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

Użyj patrz stare instrukcje debugowania, kiedy używałem scite, a nie gedit jako edytora graficznego.

Coś, co nie działa w ten sposób, to otwieranie wielu takich plików:

 edit *.html

jeśli jest więcej niż jeden plik HTML, więc wzorzec zostanie rozwinięty do wielu plików.

Prawidłowe wywołania to:

 edit 
 edit foofile 
 edit foofile 123

z X lub terminala.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.