Відкрийте програму для редагування текстових файлів з командного рядка


9

Встановлюючи TextWrangler в OSX, ви також отримуєте editкоманду, яка дозволяє відкрити будь-який текстовий файл з командного рядка.

Чи можливо мати подібний функціонал в Ubuntu, щоб набрати якусь команду на терміналі, щоб відкрити файл у певному текстовому редакторі (скажімо, Kate)?

Відповіді:


11

Щоб відкрити файл за допомогою kate, ви можете запустити щось на кшталт:

kate filename

Це може відображати такі повідомлення, як:

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

Щоб видалити ці повідомлення, переспрямуйте потік виводу помилок на /dev/null:

kate filename 2>/dev/null

Якщо ви хочете продовжувати використовувати той же термінал, додайте &команду після:

kate filename 2>/dev/null &

Якщо ви хочете запустити edit filenameйого, щоб відкрити його, ви можете створити функцію bash у своєму ~/.bashrcфайлі. Додайте наступний код у свій ~/.bashrcфайл:

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

Це наближається до того, що я шукав. Дякуємо за те, що ви справді виконуєте команди та бачите проблеми, які виникатимуть із найбільш очевидними рішеннями. Я думаю, що я зроблю це створити нову команду, яку я можу просто зателефонувати, edit filenameщоб запустити ціле kate filename 2>/dev/null &.
Хуан А. Наварро

1
@Juan: Я додав приклад для цього. $@Потрібно в разі , якщо вам потрібно передати додаткові параметри , такі як номер рядка. Як альтернативу, ви можете налаштувати цю функцію на підтримку edit filename linenumber.
Лекенштейн

У вас є помилка у вашій відповіді, і я не можу редагувати її. Ви забули цитати навколо $@(повинні бути "$@"), а це означає, що ваш сценарій вийде з ладу з іменами файлів, що містять пробіли.
Скотт Северанс

18

Ви можете відкрити (наскільки мені відомо) будь-який із таких редакторів:

NAME_OF_EDITOR FILENAME

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

Ви навіть можете відкрити веб-сторінку так само
firefox filename.html
chrome filename.html
banshee filename.oggабо .mp3

Ви можете побачити тенденцію тут ..


Насправді це має бути gedit filename &інакше, термінал залишається непридатним. Те ж саме відбувається і з цим, kateале навіть з цим &він робить термінал непридатним, оскільки він починає плювати налагоджувальну (або будь-яку іншу) інформацію в термінал. Чи є спосіб взагалі уникнути цього &? Як я це роблю з editTextWrangler?
Хуан А. Наварро

Не маючи на увазі, відповідь Лекенштейна - це (принаймні ближче) до того, що я шукав.
Хуан А. Наварро

1
Правда, ви можете додати & / або навіть додати 2> / dev / null до нього, щоб не виводити помилки та речі в консолі, якщо ви хочете продовжувати її використовувати.
Луїс Альварадо

3

Якщо ви віддаєте перевагу використовувати команду editв Ubuntu ще й тому, що ви звикли робити це, ви також можете визначити псевдонім для вашого улюбленого редактора, наприклад для Kate:

alias edit='kate'

Щоб зробити цей псевдонім постійним, просто додайте цей рядок до ~/.bash_aliases.


2

Якщо у вас немає графічного середовища, а ви працюєте на консолі, ви завжди можете використовувати:

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

і так далі повертається до першої відповіді ..


1
"emacs -nw" або "xemacs -nw", якщо ви хочете, щоб VT100 (x) emacs знаходився навіть у вікні.
barrycarter

1

Ви можете використовувати команду CLI для потрібного редактора для відкриття та редагування файлів. Наприклад, geditу gnome або kateв KDE.

Просто введіть:

kate filename

відкрити файл у kate.


1

Я іноді використовую класичний термінал, де mcedit є моїм кращим редактором, і часто люблю передавати номер рядка, щоб виправити програму / сценарій.

Щоб уніформально їх називати, edit source.sh 123я написав цей сценарій, який я розмістив як "редагувати" на шляху:

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

Використовуйте перегляд старих інструкцій щодо налагодження, коли я використовував scite, а не gedit, як графічний редактор.

Щось, що не працює таким чином, це відкриття декількох файлів на кшталт цього:

 edit *.html

якщо є більше одного html-файлу, то візерунок розширюється на кілька файлів.

Дійсні виклики:

 edit 
 edit foofile 
 edit foofile 123

від X або терміналу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.