【问题标题】:Is there a way to open files with Notepad++ in Bash on Ubuntu on Windows?有没有办法在 Windows 上的 Ubuntu 上的 Bash 中使用 Notepad++ 打开文件?
【发布时间】:2016-10-25 04:49:02
【问题描述】:

我使用的是 Windows 10,但我在 Windows 上的 Ubuntu (WSL) 上使用 Bash 来熟悉 Linux 命令行。

我正在尝试充分利用它的功能,并认为能够从 Notepad++ 中的 CLI 打开例如 index.html 会很棒。这可能吗?如果是这样,我将如何设置它?

总的来说,我对命令行很陌生,更不用说 Linux 命令了。

【问题讨论】:

  • 类似"/path/to/c/drive/program files/notepad++/notepad++.exe" index.html... 您可以创建 bash 函数以使其看起来更小更干净。
  • 正题。 Windows 上的 Ubuntu 是“程序员常用的软件工具”(或者至少,它的目的是这样)。

标签: windows bash ubuntu notepad++ command-line-interface


【解决方案1】:

绝对可以在 WSL 中使用 Notepad++。事实上,您可以像在普通 Windows 环境中一样使用它。

您需要创建一个 bash 别名,以便更轻松地使用以下命令:

<path_to_textEditor> <path_to_textfile>


要为 Notepad++ 创建别名,请在 WSL bash 中执行以下操作:

  1. 打开您的 .bashrc 启动脚本(在 bash 启动时运行):

    vim ~/.bashrc

  2. 在脚本中添加别名定义:

    alias np='<path_to_textEditor>'

    对于记事本++,它将是:

    alias np='/mnt/c/Program\ Files\ \(x86\)/Notepad++/notepad++.exe'

    如果您没有在默认目录中安装 Notepad++,您可能需要调整路径。

    确保使用转义字符 \(反斜杠)转义任何特殊字符,例如空格。

现在,像往常一样使用它:

要打开记事本++,请执行np

要在 Notepad++ 中打开特定文件,请执行 np <text_file>


根据用户 @ericpeters 的建议,您可能希望将几个有用的 Notepad++ startup options 添加到您的别名中。

这些启动选项附加到别名字符串的末尾并用空格分隔。

alias np='<path_to_textEditor> <startup_option_1> <startup_option_2> ...'

这里有一些例子:

  • -multiInst:打开一个独立于当前打开的 Notepad++ 会话(如果存在)的新 Notepad++ 实例。

  • -nosession:不要加载上一个会话,也不要将会话保存到session.xml

  • -notabbar:关闭标签界面。

这是一个启动选项的示例:

alias np='/mnt/c/Program\ Files\ \(x86\)/Notepad++/notepad++.exe -multiInst -notabbar -nosession'

就我个人而言,我有两个独立的别名,一个没有启动选项,一个具有上述三个启动选项。这让我可以选择是否要:

  • 当我不想使用 VIM 时快速编辑单个文件(退出时返回 CLI)。用于编写 git 提交消息。
  • 在我的“始终打开”标准 Notepad++ 会话中打开文件(带有选项卡)。

【讨论】:

  • 当我尝试 np Notepad++ 启动,但它失败并出现错误“无法翻译当前工作目录。使用 C:\windows\system32”并且它没有打开文件
  • @FelixOgg,可能没有与您尝试访问的路径等效的 Windows,或者不应通过 NT 进程访问它。也许你可以在这里找到帮助:github.com/Microsoft/WSL/issues/2011#issuecomment-297519769
  • 因为我有肌肉记忆可以输入mate 我只需将 `alias mate='/mnt/c/Program\ Files/Notepad++/notepad++.exe -multiInst -notabbar -nosession -noPlugin' 添加到我的 ~/.bashrc 文件...这使我可以执行以下操作: $ mate jvm/src/main/scala/fm/common/InputStreamResource.scala 它将打开,并且它将保持该命令打开直到我关闭文件
  • 好主意@ericpeters,当我最初写答案时,我没有考虑启动选项。已添加。
【解决方案2】:

我通常把所有工作文件都放在Windows目录下

/mnt/d/ubuntu/ 

然后在 WSL Ubuntu shell 中,我创建一个指向目录的符号链接

ln -s /mnt/d/ubuntu ~/win

无论我在 WSL 中使用什么文件,我都将它们放在这个目录中,除了 linux 特定文件,这些文件通常不需要用 Windows 应用程序打开。

现在,当您想使用 Windows 应用程序来处理文件时,您只需浏览应用程序即可

D:/ubuntu/.../your/files

【讨论】:

    【解决方案3】:

    对于 WSL2,我只需将 Notepad++ 目录添加到 PATH 并将该脚本放在那里:

    #!/bin/bash
    
    params=()
    args=($@)
    argslength=${#args[@]}
    for (( i=0; i<${argslength}; i++ ));
    do
      param=${args[$i]}
      if [[ ${param:0:1} == "/" ]]; then
        params[$i]=$(wslpath -w $param)
      else
        params[$i]=$param
      fi
    done
    
    notepad++.exe ${params[@]}
    

    它将绝对路径(以一种天真的但简单的方式)转换为 Windows 格式,以便 Notepad++ 可以理解它们。

    我通常只是将脚本命名为npp,然后我的git ecg 再次工作。

    git config --global alias.ecg "config --global -e"
    git config --global core.editor "npp -multiInst -notabbar -nosession -noPlugin"
    

    【讨论】:

      猜你喜欢
      • 2018-07-24
      • 2017-03-01
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-07
      相关资源
      最近更新 更多