从Cygwin使用Notepad ++,而无需外壳程序等待退出代码


19

我正在运行Cygwin,并希望使用Notepad ++作为主要的外壳编辑器,有点像我在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 ++。

但是,外壳程序会一直等到Notepad ++关闭后,在此之前将不允许任何输入。这可能是bash特有的,但是如何才能从Cygwin中打开Notepad ++并告诉Shell 不要等待退出代码继续?&在别名命令的末尾添加a 不能正常工作,它只会打开一个无标题的文件并发出警告,filename: command not found而不是打开该文件。

谢谢!

Answers:


16

您可以尝试使用bash函数在与号之前传递参数:

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

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

Emacs提供了一种将其设置EDITOR为的方法emacsclient,然后在完成编辑后,按一下神奇的按键(C-x #)表示编辑已完成。如果Notepad ++对于cygwin用户有类似的东西,我可以看到它是如何工作的。

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


太棒了-确实有效。我将使用香草记事本作为EDITOR,以及记事本++作为np()
安德鲁

记事本还需要等待编辑完成
Codezombie

8

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

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

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

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

这还将在当前运行的Notepad ++窗口中弹出一个标签,而不是打开另一个窗口-并且如果该文件已打开,则不会再次打开它。


如何将〜/ bin添加到$ PATH?
eric f

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
哦 到目前为止看起来不错。有没有办法把它放进去,.bash_profile所以我不需要一直输入它?
安德鲁(Andrew)2010年

我不是bash专家,但是我想您可以让您的别名使用一个作为参数的变量,并在末尾添加&符。精通bash的人可能会给您确切的语法。我只知道如何回答您的问题,因为我曾经在Windows开发环境中做过同样的事情:)
Robert S Ciaccio

您不能使别名在Bash中使用变量。您必须使用函数或脚本。
暂停,直到另行通知。

1

别名不采用插值参数。改用一个函数。

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

1
#!/bin/sh
/cygdrive/c/Program\ Files/Notepad++/notepad++.exe $@ &

该脚本在后台启动Notepad ++,在'&'之前传递命令行参数

正如Doug所建议的那样,具有$EDITOR不阻止的默认设置可能会导致问题。


0

cygwin中有一个特定的命令可以完成此任务。确保下载run.exe,并确保它位于PATH中(或PATH包含可执行文件)

alias np="run.exe /cygdrive/c/Program\ Files/Notepad++/notepad++.exe"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.