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

And*_*rew 19 cygwin bash notepad++

我正在运行 Cygwin 并希望使用 Notepad++ 作为主要的 shell 编辑器,有点像我在 Mac 上的编辑器,我可以在其中键入mate whatever以打开 TextMate 的一个实例。在我~/.bashrc的 Cygwin 文件中,我设置了以下别名和环境变量:

export EDITOR="/cygdrive/c/Program\ Files/Notepad++/notepad++.exe"
alias np="/cygdrive/c/Program\ Files/Notepad++/notepad++.exe"
Run Code Online (Sandbox Code Playgroud)

它主要有效:当我键入np whatever或 Cygwin 程序调用 $EDITOR 时,Notepad++ 会打开。

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

谢谢!

Dou*_*ris 17

您可以尝试使用一个bash函数在&符号之前传递参数:

np ()
{
    /cygdrive/c/Program\ Files/Notepad++/notepad++.exe $* &
}
Run Code Online (Sandbox Code Playgroud)

更大的问题可能是等到 Notepad++ 退出的整个想法。$EDITOR通常使用的 Shell 命令旨在等待编辑器发回编辑已完成的指示。这通常意味着编辑器已退出(例如使用vinano)。

Emacs 有一种方法可以将您设置EDITORemacsclient,然后当您完成编辑时,您可以敲击一个神奇的按键 ( C-x #) 来表示编辑已完成。如果 Notepad++ 对 cygwin 用户有类似的东西,我可以看到它是如何工作的。

另一种选择是使用简单、无聊、简单的记事本作为您的编辑器,并保留 Notepad++ 以供大量使用(我从这篇博客文章中得到了这个想法)


小智 8

我用一个简单的符号链接解决了它。

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

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

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

这也会在当前运行的 Notepad++ 窗口中抛出一个选项卡,而不是打开另一个 - 如果文件已经打开,它不会再次打开它。