19

Я использую Cygwin и хотел бы использовать Notepad++ в качестве основного редактора оболочки, что-то вроде того, что у меня есть на моем 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++.

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

Спасибо!

7 ответов7

16

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

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

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

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

Другой альтернативой является использование простого, скучного, простого Блокнота в качестве редактора и резервный Блокнот ++ для интенсивного использования (идея пришла из этого поста в блоге)

8

Я решил это с помощью простой символической ссылки.

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

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

Теперь, чтобы открыть файл, я просто набираю «npp filename.txt» в приглашении cygwin. Мне не приходилось использовать & в конце команды.

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

3

экспорт EDITOR = "/cygdrive/c/Program\ Files\ '(x86)'/Notepad++/notepad++. exe"

псевдоним np = "/cygdrive/c/Program\ Files\ '(x86)'/Notepad++/notepad++. exe"

также работает для x86

2

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

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

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

np whatever &

1

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

function np() { /cygdrive/c/Program\ Files/Notepad++/notepad++.exe $1 & }
1
#!/bin/sh
/cygdrive/c/Program\ Files/Notepad++/notepad++.exe $@ &

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

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

0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .