在 Cygwin 中使用 Notepad++,无需让 shell 等待退出代码

在 Cygwin 中使用 Notepad++,无需让 shell 等待退出代码

我正在运行 Cygwin,并希望使用 Notepad++ 作为主 shell 编辑器,类似于我在 Mac 上使用的编辑器,我可以在里面键入mate whatever以打开 TextMate 实例。在~/.bashrcCygwin 中的文件中,我设置了以下别名和环境变量:

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

它主要起作用:当我输入np whatever或当 Cygwin 程序调用 $EDITOR 时,Notepad++ 就会打开。

但是,shell 会等到 Notepad++ 关闭后才允许任何输入。这可能是 bash 独有的,但我如何才能从 Cygwin 打开 Notepad++ 并告诉 shell不是等待退出代码才能继续?&在别名命令末尾添加无法正常工作 - 它只会打开一个未命名的文件并发出警告,filename: command not found而不是打开该文件。

谢谢!

答案1

您可以尝试使用bash函数来传递“与”符号前的参数:

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

更大的问题可能是不是等待 Notepad++ 退出。$EDITOR通常使用的 Shell 命令是设计等待编辑器返回编辑已完成的指示。这通常意味着编辑器已退出(例如使用vinano)。

Emacs 有一种方法可以设置您的EDITORemacsclient然后当您完成编辑时,您可以按下一个神奇的按键 ( C-x #) 来指示编辑已完成。如果 Notepad++ 为 cygwin 用户提供类似的东西,我可以想象这会如何工作。

另一种选择是使用普通、无聊、简单的记事本作为编辑器,并保留 Notepad++ 以供频繁使用(我的想法来自这篇博文

答案2

我用一个简单的符号链接解决了这个问题。

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

当然 ~/bin 在我的 $PATH 中。

现在要打开文件,我只需在 cygwin 提示符下输入“npp filename.txt”。我不必在命令末尾使用 &。

这还会将一个选项卡放入当前正在运行的 Notepad++ 窗口而不是打开另一个窗口 - 并且如果文件已经打开,它不会再次打开它。

答案3

导出编辑器=“/cygdrive/c/Program\Files\'(x86)'/Notepad++/notepad++.exe”

别名 np="/cygdrive/c/Program\ Files\'(x86)'/Notepad++/notepad++.exe"

也适用于 x86

答案4

别名不接受插值参数。请改用函数。

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

相关内容