【问题标题】:Edit a text file on the console using Powershell使用 Powershell 在控制台上编辑文本文件
【发布时间】:2012-06-15 05:30:13
【问题描述】:

我正在尝试找出在控制台中编辑文本文件的最简单方法(在我的例子中是 PowerShell)。我正在使用 Windows 7 64 位。我不能只输入edit filename.txt 来编辑文件,这让我很恼火。这曾经有效,但这一切都改变了。在 Windows 控制台中查看和编辑文本文件的选项是什么,如果你告诉我安装和学习 VIM,我会打你的脸。 :-)

【问题讨论】:

标签: text-editor windows-7-x64


【解决方案1】:

为什么不用记事本?

notepad.exe filename.txt

旧的edit.com 在 PowerShell 中工作(至少在我的机器上:Windows 7 Pro x86)但在 x64 中由于其 16 位架构而无法工作。

你可以看看thiseasy editor。

【讨论】:

  • 如果您尝试在本地编辑文件,您只需键入 notepad 而不是 notepad.exe 即可。您每天只需节省几秒钟 :)
  • 记事本对我来说静默失败(Windows2019)。它真的有内置的控制台编辑器,还是试图在无窗口会话中打开一个窗口?
  • 此答案需要 GUI,因此不适用于 Windows Core(例如容器、ps-remoting、AWS SSM Start-Session)
  • @Thomas 是的,如果没有 GUI,它将无法在 Windows 安全模式下运行。
【解决方案2】:

Kinesics Text Editor.

它速度极快,可以处理大型文本文件,但功能很少。包括 GUI 版本和控制台版本 (k.exe)。应该在linux上工作相同。

示例:在我的测试中,打开 500mb 磁盘映像需要 7 秒。

【讨论】:

  • 您不必安装。只需运行 .exe 包,它将暂停并显示错误 740(需要提升)。记下它提取文件的目录,并将它们复制到某处。
【解决方案3】:

虽然你冒着打我的风险,但我猜你还是坚持你提到的解决方案。查看 SuperUser 上的此帖子:

Which are the non-x text editors in Powershell?

另外,还有一个适用于 windows 的 nano 版本:

Nano Editor

我现在就回避一下,希望有人能给出更充分的答案。

【讨论】:

  • 对于需要知道如何从每个目录获取 nano 工作的用户,相关的谷歌搜索是:google.co.uk/… 我个人更喜欢 nano 而不是 kinesics,但个人偏好可能会有所不同
  • 你拯救了我的一天。 win32-support有windows版本。
【解决方案4】:

有点复活,但对于其他提出此问题的人,请查看Micro 编辑器。它是一个小型的独立 EXE,没有依赖项,具有原生 Windows 32\64 版本。在 PowerShell 和 CMD.EXE 中运行良好。

【讨论】:

  • micro.exe 处理汉字比k.exe / kit.exe 好。
  • 但遗憾的是,micro.exe 不擅长处理 windows 文件路径,“打开文件”命令不提供文件资源管理器窗口。
【解决方案5】:

我同意Sven Plath。 Nano 是一个很好的选择。如果您有Chocolateyscoop,您可以通过在Powershell 中输入以下内容来安装nano:

PS C:\dev\> choco install nano
# --OR--
PS C:\dev\> scoop install nano

然后,编辑 somefile.txt 输入:

PS C:\dev\> nano somefile.txt

很漂亮!

编辑: Nano 在我的 Windows 10 机器上运行良好,但在我的 Windows 7 机器上第一次加载需要很长时间。这让我在我的 Win 7 笔记本电脑上切换到 vim (vi)

PS C:\dev\> choco install vim
PS C:\dev\> vim $profile

在 Powershell 配置文件中添加一行到 Set-Alias (sal)

sal vi vim

Esc - : - x - Enter :-)

【讨论】:

    【解决方案6】:

    您可以安装Far Manager(顺便说一句,一个很棒的OFM)并这样调用它的编辑器:

    Far /e filename.txt
    

    【讨论】:

    • 感谢文件管理器,距离我上次用这种文件管理器已经很久了,哦,我记得在学校的旧电脑上玩的时候:)
    【解决方案7】:

    如果您使用 Windows 容器并且想要更改任何文件,您可以在 Powershell 控制台中轻松获取和使用 Vim。

    使用 PowerShell 转至 Windows Docker 容器:

    docker exec -it <name> powershell

    • 首先获取 Chocolatey 包管理器

      Invoke-WebRequest https://chocolatey.org/install.ps1 -UseBasicParsing | Invoke-Expression;

    • 安装 Vim

      choco install vim

    • 刷新环境变量 你可以exit 并返回容器

    • 转到文件位置并将其 Vim vim file.txt

    【讨论】:

      【解决方案8】:

      从网上安装 vim,然后你可以这样做: vim "filename" 编辑该文件

      【讨论】:

      • 糟糕的答案,在 OP 明确说明之后,他们确实想要使用 Vim。 -1.
      • 不是一个糟糕的答案,因为谷歌会在这里带领除 OP 以外的人。
      【解决方案9】:

      您可以通过 choco 在 powershell 中安装 nano - 这是一种将文本编辑功能引入 powershell 的低摩擦方式:

      1. 安装 Choco
      Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
      
      1. 安装 Nano
      choco install nano
      
      1. 利润
      nano myfile.txt
      

      最好的部分是它成为路径的一部分,并且在重新启动等后保持工作:)

      【讨论】:

      • Nano on windows in remote powershell 似乎无法识别上/下/左/右键。
      • 您可能应该使用更多的recent version nano。 choco 提供的那个已经很老了。然后为了将它与 SSH 一起使用,您需要使用-cg 标志运行,但无论如何都会丢失光标更新。要更新光标位置的视觉位置,请按CTRL-L
      • 如果您对 nano 有任何问题,请改用 vim
      【解决方案10】:

      我想你可以像这样使用记事本:

      notepad myfile.extension
      

      它应该在记事本中打开。

      【讨论】:

      【解决方案11】:

      我是一名退休的工程师,在 60 年代与 DOS、Fortran、IBM360 等一起长大,和本博客上的其他人一样,我非常怀念在 64 位 Windows 中失去命令行编辑器。在花了一周的时间浏览互联网和测试编辑器之后,我想分享我的最佳解决方案:Notepad++。这与 DOS EDIT 相去甚远,但也有一些附带的好处。不幸的是,它是一个屏幕编辑器,需要鼠标,因此速度很慢。另一方面,它是一个不错的 Fortran 源代码编辑器,并且显示了行号和列号。它可以为正在编辑的文件保留多个选项卡,甚至可以记住光标的最后位置。我当然会继续输入键盘代码(50 年的习惯),但令人惊讶的是,其中至少有一些是有效的。也许不是记录在案的功能。我将编辑器重命名为 EDIT.EXE,设置它的路径,然后从命令行调用它。这还不错。我和它一起生活。顺便说一句,请注意不要在 Fortran 源代码中使用 tab 键。在文本中放置一个 ASCII 6。它是不可见的,至少 gFortran 无法处理它。 Notepad++ 可能有很多我没时间乱搞的功能。

      【讨论】:

        【解决方案12】:

        我不得不对 Windows Nano docker 映像进行一些调试,并且需要编辑文件的内容,谁会猜到这太难了。

        我结合使用Get-ContentSet-Content 以及base 64 编码/解码来更新文件。比如

        编辑 foo.txt

        PS C:\app> Set-Content foo.txt "Hello World"                                                                                                                                                                                        
        PS C:\app> Get-Content foo.txt                                                                                                                                                                                                      
        Hello World                                                                                                                                                                                                                         
        PS C:\app> [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("TXkgbmV3IG11bHRpDQpsaW5lIGRvY3VtZW50DQp3aXRoIGFsbCBraW5kcyBvZiBmdW4gc3R1ZmYNCiFAIyVeJSQmXiYoJiopIUAjIw0KLi4ud29ybGQ=")) | Set-Content foo.txt 
        PS C:\app> Get-Content foo.txt                                                                                                                                                                                                      
        My new multi                                                                                                                                                                                                                        
        line document                                                                                                                                                                                                                       
        with all kinds of fun stuff                                                                                                                                                                                                         
        !@#%^%$&^&(&*)!@##                                                                                                                                                                                                                  
        ...world                                                                                                                                                                                                                            
        PS C:\app>       
        

        诀窍是将 base 64 解码字符串传送到 Set-Content

        [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("...")) | Set-Content foo.txt 
        

        它不是 vim,但我可以更新文件,不管它的价值。

        【讨论】:

          【解决方案13】:

          在 linux 中,我喜欢 Nano 或 vim,我曾经使用 nano,现在使用 vim,它们确实是不错的选择。有一个适用于 windows 的版本。这是链接https://nano-editor.org/dist/win32-support/

          但更多时候,我们需要尽快从命令行打开相关文件,以免浪费时间。我们可以使用notepad.exe,我们可以使用notepad++,是的,我们可以使用sublim text。我认为没有比轻量级、功能强大的编辑器更好的了。崇高的文字在这里。对于这件事,我们只是不想离开命令行,或者我们想使用命令行快速。是的。我们可以为此使用崇高的文本。它包含一个命令行,可让您以崇高的文本快速打开文件。您还可以使用不同的选项参数。在这里你是怎么做的。

          首先你需要知道有subl.exe。 sublim 的命令行界面。

          1-> 首先我们创建一个批处理文件。内容是

          @ECHO OFF
          
          "C:\Program Files\Sublime Text 3\subl.exe" %*
          

          我们可以将它保存在任何我们想要的地方。我更喜欢在 sublime text 安装目录上创建一个目录。并将我们来编写和创建的批处理文件保存在那里。

          (备注:在安装过程中更改上面的路径)。

          2-> 我们将该文件夹添加到路径系统环境变量中。就是这样。

          或来自系统配置(Windows 7/8/10)

          然后:

          然后:

          然后我们复制路径:

          然后我们将它添加到路径变量中:

          太快了!

          启动一个新的 cmd,现在你的 subl 命令运行良好!

          要打开文件,您只需使用 subl 命令作为伙伴:

          subl myfileToOpen.txt
          

          您还可以使用选项参数之一(键入 --help 以查看它们,如上图所示)。

          另请注意,您几乎可以将相同的方法应用于您选择的任何编辑器。

          【讨论】:

          【解决方案14】:

          您可以执行以下操作:

          bash -c "nano index.html"
          

          上面的命令使用 Powershell 中的 nano 编辑器打开 index.html 文件。

          或者,您可以通过以下命令使用 vim 编辑器

          bash -c "vi index.html"
          

          【讨论】:

          • 经过测试并在 64 位窗口上工作。我认为您也需要启用 WSL 才能使用 bash
          【解决方案15】:

          不确定这是否会使任何人受益,但如果您使用的是 Azure CloudShell PowerShell,您只需键入:

          code file.txt
          

          Visual Studio 代码会弹出要编辑的文件,非常棒。

          【讨论】:

          • 在 Win 10 中也为我工作,使用 Windows PowerShell。谢谢。
          【解决方案16】:

          在 Windows 7 上编辑文本文件有上千种方法。 通常人们安装 Sublime 、 Atom 和 Notepad++ 作为编辑器。 对于命令行,我认为基本编辑命令(顺便说一句,在 64 位计算机上不起作用)很好;或者我发现类型 con > 文件名是一种非常值得称赞的方法。如果新安装了 windows 并且想避免使用记事本.这可能是它! The perfect usage of Type as an editor :)

          图片参考:-https://www.codeproject.com/Articles/34280/How-to-Write-Applet-Code

          【讨论】:

            【解决方案17】:

            如果你有linux的windows子系统(wsl),你会发现下面的命令非常有用:

            bash -c "vi filename.txt"
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-11-25
              • 2022-10-14
              • 1970-01-01
              • 1970-01-01
              • 2014-01-15
              • 2015-12-25
              相关资源
              最近更新 更多