Блокнот использования ++ от Cygwin, не имея оболочки ожидает кода выхода

Я выполняю Cygwin и хотел бы использовать Блокнот ++ в качестве основного редактора оболочки, отчасти как то, что я имею на своем Mac, где я могу ввести mate whatever открывать экземпляр TextMate. В моем ~/.bashrc файл в Cygwin у меня есть следующий псевдоним и набор переменной среды:

export EDITOR="/cygdrive/c/Program\ Files/Notepad++/notepad++.exe"
alias np="/cygdrive/c/Program\ Files/Notepad++/notepad++.exe"

Это главным образом работает: когда я ввожу np whatever или когда программа Cygwin призывает к $EDITOR, Блокнот ++ открывается.

Однако оболочка ожидает, пока Блокнот ++ не закрывается и не позволит входа до тех пор. Это может быть характерно для удара, но как я могу открыть Notepad ++ от Cygwin и сказать оболочке не ожидать кода выхода для продолжения? Добавление a & в конец псевдонима команда не работает правильно — это просто открывает файл без названия и предупреждает filename: command not found вместо того, чтобы открыть файл.

Спасибо!

19
задан 28.07.2010, 21:26

6 ответов

Вы могли попробовать a bash функционируйте для передачи аргументов перед амперсандом:

np ()
{
    /cygdrive/c/Program\ Files/Notepad++/notepad++.exe $* &
}

НО большей проблемой может быть вся эта мысль о не ожидании до Блокнота ++ выходы. Команды Shell, которые используют $EDITOR обычно разрабатываются для ожидания, пока редактор не передает признак обратно, что редактирование завершилось. Это обычно означает, что редактор вышел (например, с vi или nano).

Emacs имеет способ установить Ваш EDITOR кому: emacsclient и затем когда Вы сделаны, редактируя, Вы поражаете волшебное нажатие клавиши (C-x #) указать, что редактирование завершено. Если бы Блокнот ++ имел что-то подобное для cygwin пользователей, я вижу, как это работало бы.

Другая альтернатива должна использовать простой, скучный, простой Блокнот в качестве Вашего РЕДАКТОРА и зарезервировать Блокнот ++ для интенсивного использования (я получил идею от этого сообщения в блоге),

16
ответ дан 07.12.2019, 10:18

Просто добавьте пространство и амперсанд (и) в конец Вашей команды, и оболочка сразу возвратится к режиму ввода при оставлении блокнота ++ открытым.

на редактировании:

Я не говорю о добавлении его к Вашему псевдониму. Добавьте его в конец своей команды как это:

np whatever &

2
ответ дан 07.12.2019, 10:18

Псевдонимы не берут интерполированные аргументы. Используйте функцию вместо этого.

function np() { /cygdrive/c/Program\ Files/Notepad++/notepad++.exe $1 & }
1
ответ дан 07.12.2019, 10:18
#!/bin/sh
/cygdrive/c/Program\ Files/Notepad++/notepad++.exe $@ &

Этот сценарий запускает Блокнот ++ в фоновом режиме, передавая параметры командной строки перед '&'

Как рекомендуемый Doug, имея значение по умолчанию $EDITOR это не блокируется, может вызвать проблемы.

1
ответ дан 07.12.2019, 10:18

Существует определенная команда в cygwin для выполнения этого. Удостоверьтесь, что Вы загружаете run.exe и удостоверяетесь, что это находится в Вашем ПУТИ (или Ваш ПУТЬ содержит исполняемый файл),

alias np="run.exe /cygdrive/c/Program\ Files/Notepad++/notepad++.exe"
0
ответ дан 07.12.2019, 10:18

Я решил его с простой символьной ссылкой.

ln -s /cygdrive/c/Program\ Files\ \(x86\)/Notepad++/notepad++.exe ~/bin/npp

Конечно, ~ / мусорное ведро находится в моем $PATH.

Теперь для открытия файла я просто ввожу "npp filename.txt" от подсказки cygwin. Я имею, не должны были использовать и в конце команды.

Это также бросит вкладку в в настоящее время рабочее окно Notepad ++ вместо того, чтобы открыть другой - И если файл уже открыт, это не открывает его снова.

8
ответ дан 07.12.2019, 10:18

Теги

Похожие вопросы