打开应用程序以从命令行编辑文本文件


9

在OSX中安装TextWrangler时,您还会获得一条edit命令,该命令可让您从命令行打开任何文本文件。

在Ubuntu中是否可以有类似的功能,以便在终端上键入一些命令以在特定的文本编辑器中打开文件(例如Kate)?

Answers:


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以打开它,则可以在~/.bashrc文件中创建bash函数。将下一个代码添加到您的~/.bashrc文件中:

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

这更接近我想要的东西。感谢您实际运行命令,并查看最明显的解决方案所产生的问题。我想我要做的是创建一个新命令,我可以调用它edit filename来运行整个命令kate filename 2>/dev/null &
Juan A. Navarro

1
@Juan:我已经添加了一个示例。在$@需要的情况下,你需要通过像行号的附加选项。或者,您可以调整此功能以支持edit filename linenumber
Lekensteyn 2011年

您的答案有错误,我似乎无法对其进行编辑。您忘记了引号$@(应该是"$@"),这意味着您的脚本将失败,并且文件名中包含空格。
Scott Severance

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但是,即使发生同样的事情,即使这样&也会使终端无法使用,因为它开始向终端吐出调试(或其他信息)信息。&到底有没有办法避免这种情况?如我edit从TextWrangler所做的那样?
Juan A. Navarro

没关系,Lekensteyn的答案(至少接近)是我所寻找的。
Juan A. Navarro

1
是的,如果您想继续使用它,可以在其中添加甚至添加2> / dev / null以不输出错误和在控制台中的内容。
Luis Alvarado

3

如果您edit还习惯于在Ubuntu中使用该命令,也可以像Kate一样为自己喜欢的编辑器定义一个别名:

alias edit='kate'

要永久保留此别名,只需将此行添加到~/.bash_aliases


2

如果您没有任何图形环境并且在控制台上运行,则可以始终使用:

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

等等回落到第一个答案。


1
如果甚至在窗口环境中也要VT100(x)emacs,则使用“ emacs -nw”或“ xemacs -nw”。
barrycarter 2011年

1

您可以对所需的编辑器使用CLI命令来打开和编辑文件,例如gedit在gnome或kateKDE中。

只需输入:

kate filename

在kate中打开文件。


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

从X或终端。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.