Откройте приложение для редактирования текстовых файлов из командной строки


9

При установке TextWrangler в OSX вы также получаете editкоманду, которая позволяет вам открыть любой текстовый файл из командной строки.

Возможно ли иметь подобную функциональность в Ubuntu для ввода какой-либо команды на терминале, чтобы открыть файл в определенном текстовом редакторе (скажем, Кейт)?

Ответы:


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(Кубунту)
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 даже внутри оконной среды.
Баррикартер

1

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

Просто введите:

kate filename

открыть файл в кейт.


1

Я иногда использую классический терминал, где mcedit - мой предпочтительный редактор, и часто люблю передавать номер строки, чтобы исправить программу / скрипт.

Для их равномерного вызова edit source.sh 123я написал этот скрипт, который я поместил как «edit» в путь:

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

от Х или терминала.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.