Как запустить TextEditor из командной строки?

67

Я много работаю в командной строке в терминале и хотел бы запустить текстовый редактор для определенного файла. Я из Linux Land и обычно использую kwrite или gedit из оболочки bash. Пытаясь найти эквивалент Mac, как догадался, попробовал

user> textedit somefile.txt

а также

user> texteditor somefile.txt

а также

user> TextEditor somefile.txt

и другие варианты. Я не могу найти правильное название приложения текстового редактора. (Нет, vi мне не нравится.) Как ни странно, парень из магазина Apple этого не знал.

DarenW
источник
И Натан, и Мипади дают ответы, но я думаю, что это только частичные ответы, поэтому я добавил один. Я не уверен, что было бы лучше как-то объединить их ответы, и если да, то как это сделать.
Виктор Хааг
@Viktor, как правило, не стоит повторно публиковать то, что люди уже сказали, и точные дубликаты удаляются. Поскольку вам есть, что добавить, хорошими путями будет ответ «В дополнение к методам Натана и Мипади ...» или комментарии к этим ответам с вашими дополнениями. То, что вы сделали здесь, хорошо, но не совсем «лучшая практика». Спасибо за вопрос; теперь ты знаешь на будущее :-).
Натан Гринштейн

Ответы:

105

Вот несколько возможных ответов, все с использованием утилиты командной строки open.

Параметр -a означает «открыть аргумент файла с помощью указанного приложения»:

open -a TextEdit file.txt

Параметр -e означает «открыть аргумент файла с помощью приложения TextEdit»:

open -e file.txt

Параметр -t означает «открыть файл с помощью приложения по умолчанию для редактирования текстовых файлов, как определено с помощью LaunchServices». По умолчанию это будет /Applications/TextEdit.app; однако этот параметр может быть переопределен:

open -t file.txt

Наконец, любой файл текстового типа будет открыт приложением, привязанным к текстовому типу, если вы просто скажете open file.txt. Вы можете использовать команду «Файл» , чтобы показать , что операционная система считает , что тип файла: file file.txt. Так, например, если вы переименовали «file.txt» в «textfile», то open textfileвсе равно открыли бы его в приложении для редактирования текстового файла по умолчанию, если file textfileвсе еще думали, что «textfile» на самом деле является текстовым файлом.

Короткий файл справки openможно найти, запустив

open --help

Или вы можете прочитать все руководство с

man open
Виктор Хааг
источник
2
Я помещаю это в мой файл .bash_profile: "alias o = 'open -a Sublime \ Text \ 2'" и затем могу просто ввести в командной строке: "o text.txt". Это очень легко на пальцах;)
cmroanirgo
openэто единственный «правильный» способ сделать это.
CousinCocaine
13

Текстовым редактором по умолчанию является TextEdit. Вы можете открыть там текстовый файл, используя open -a:

$ open -a TextEdit hi.txt

Если вы хотите использовать другое приложение, просто введите его имя, например так:

$ open -a Coda index.html
Натан Гринштейн
источник
Это работало для меня (OSX Mojave) как с TextEdit, так и с Visual Studio Code. Спасибо!
RJ Dunnill
8

Есть два способа:

Если ваш текстовый редактор по умолчанию TextEdit, вы можете просто использовать

open -t file.txt

открыть его в TextEditor.

Если ваш текстовый редактор по умолчанию не TextEdit, и вы хотите открыть его в TextEdit специально, вы можете использовать

/Applications/TextEdit.app/Contents/MacOS/TextEdit file.txt

Конечно, любой из них можно сделать псевдонимом в вашем конфигурационном файле оболочки.

mipadi
источник
Обратите внимание, что я не уверен, что соглашение о передаче аргумента имени файла непосредственно в имя приложения в командной строке может работать не для всех приложений. Только приложения, созданные для приема имен файлов в командной строке в качестве допустимых аргументов для открытия, будут работать таким образом. Я думаю, что более общая openкоманда использует более тщательный метод, чтобы заставить приложение «открыть» аргумент файла, переданный команде open (т. Е. Она зависит от той же функциональности, с которой работает действие «двойного щелчка для открытия» в Finder).
Виктор Хааг
@Viktor Haag: оба из них будут работать с TextEdit.
Mipadi
6

Если вы ищете более удобный способ с «linux feel», добавьте что-то вроде следующего ~/.profile:

alias textmate='open -a TextMate'

или же

alias textedit='open -a TextEdit'

в зависимости от ваших редакторов.

Мартин
источник
2
Хотя .profileработает, .bash_profileчаще встречается на OS X.
CousinCocaine
3

Если вы уже начали писать в терминале и хотите продолжить работу в своем любимом редакторе, вы можете нажать ctrl+ X, ctrl+ Eи продолжить работу в emacs или в редакторе bash по умолчанию.

Если вы хотите изменить редактор по умолчанию, измените переменную среды EDITOR на вашу любимую:

EDITOR=vim;export EDITOR
EDSancha
источник
1

1) Быстро открыть интерфейс редактирования содержимого textEdit, обратите внимание, что созданные файлы хранятся в /tmpкаталоге:

#Input content + Enter + Ctrl+D
open -f

#open empty tempfile
echo|open -f

#alias
alias txted='echo|open -f'
txted

2) Предпочитаю взять стандартный ввод и вывести его в TextEdit

echo "input something"|open -f
cat Dockerfile|open -f

3) Просто откройте TextEdit:

open -e

От man open:

-e  Opens with TextEdit. 
-f  Reads input from standard input and opens with TextEdit.
Род Терри
источник
0

Посмотрите, есть ли у вас редактор vim, я даже не догадывался, что мой терминал может его использовать.

Пытаться:

user> vimtutor 

выяснить его контроль.

Вы можете редактировать файлы очень хорошо с ним. Синтаксис выглядит примерно так:

user> vim foo.txt
user70580
источник
0

TextWrangler (теперь не функционирующий и замененный на BBEdit) при установке с Command Line Utilities, позволил вам сделать:

edit README.txt

запустить TextWrangler, что для меня приятнее, чем open -t README.txt, но, возможно, я просто страдаю от инерции.

FYI - editэто двоичный исполняемый файл (из набора TextWrangler), а не просто псевдоним или символическая ссылка.

Шридхар Сарнобат
источник
0

Так как вы хотите открыть «а» текстовый редактор. Это не должно быть неправильно, если вы используете текстовый редактор командной строки, такой как vim или vi. Просто введите

user> vim filename

Глядя на другие ответы, это может показаться спорным. Но так как вы работаете в основном внутри терминала. Использование vim или Gedit - идеальный выбор.

Химсара Галлеже
источник
-3

Используйте geditкоманду:

gedit your-file.ext
Алекс Чалий
источник
3
geditпо умолчанию не устанавливается в MacOS, хотя t может быть установлен через homebrewbrew install gedit
Scot
Работает на Linux: D
Alex Chaliy
Оператор ищет решение для MacOS, а не Linux. И упоминал, что искал что-то для замены gedit в Linux. Кроме того, это сайт MacOS, так что решение Linux было бы неофициальным.
Скот