如何使用真正的PowerShell文本编辑器编辑文件

你运行了一个脚本来读取一个文本文件,并发现文件中有几个错误条目吗?在这种情况下,PowerShell 文本编辑器可能会派上用场。你不需要启动外部编辑器,而是可以在不离开 PowerShell 的情况下编辑文件。这是多么酷呀!

继续阅读,你将学习如何安装和使用三个文本编辑器(NanoVimEmacs)在 PowerShell 中编辑你的文本文件。本教程还将介绍每个编辑器的优点,帮助你选择哪一个适合你。

让我们开始吧!

先决条件

本教程将进行实际演示。如果你想跟着做,请确保你有以下内容:

  • A computer running on Windows 7 or higher. The examples in this tutorial will use Windows 10 version 21H1.
  • Windows PowerShell v3+ 或 PowerShell Core v6+。本教程将使用 Windows PowerShell 版本 5.1。
  • 最新版本的 Chocolatey(截至本教程撰写时的版本为 v0.11.2)。

使用 Nano 作为 PowerShell 文本编辑器

如果您是第一次使用基于终端的文本编辑器,或者只需对文件进行快速编辑,Nano 是您的理想选择。Nano 轻巧、直观,并且与本教程中的其他更高级编辑器相比更适用于轻型文本编辑任务。

安装 Nano

要安装 Nano,请按照以下步骤操作。

1. 以管理员身份打开 PowerShell

2. 在 PowerShell 中,执行以下 choco install 命令以安装 Nano 文本编辑器。 (-y) 开关将绕过确认提示并继续安装包。

choco install nano -y

安装过程将类似于下面的屏幕截图。正如您在此示例中所看到的,Nano 安装成功。

Installing Nano

3. 安装完 Nano 后,运行以下命令验证安装是否成功,并显示当前版本。

nano --version

如下所示,命令成功运行并显示了计算机上的 Nano 版本。

Verifying the Nano version

编辑和保存文件

既然您已经安装了 Nano,现在是时候尝试一下它了!

1. 要创建新文件或打开现有文件,请运行nano命令,并在其后跟要创建或打开的文件名。在本教程的示例中,您将创建和编辑一个Windows PowerShell脚本,该脚本使用.ps1文件扩展名。下面的命令将在当前目录下创建一个名为myPowerShellScript.ps1的新文件。

nano myPowerShellScript.ps1

Nano文本编辑器将在PowerShell中打开。正如您在下面的图像中所见,底部附近显示[New File],表示Nano已打开一个新的空文件。

The Nano editor screen

要查看所有可用的快捷命令,请按键盘上的CTRL+G以显示帮助文档。以^开头的命令表示您必须按CTRL键。另一方面,如果命令以M开头,则需要按ALT键。

2. 接下来,使用键盘上的箭头键开始编写您的脚本。例如,键入Windows PowerShell命令Write-Host "Hello World!",如下图所示。执行此命令将在控制台打印“Hello World!”文本。

请注意,一旦修改文件内容,编辑器右上角将显示Modified一词。编辑后,按CTRL+O告诉Nano您要保存文件。

Using the Write-Out shortcut

3. Nano提示您输入要写入更改的文件名。按Enter确认。

Saving the file

4. 最后,要退出Nano,请按CTRL+X

如果您尝试退出编辑器时有未保存的更改,Nano 将会询问您是否保存或忽略更改。如果选择保存,请按下Y并指定要写入的文件名,就像在步骤3中所做的那样。否则,按N来放弃更改。

Exiting Nano

5. 现在通过执行以下命令来运行您的脚本。以下命令假定您的文件在 C:\ 文件夹中。

& C:\myPowerShellScript.ps1

脚本将在终端打印消息‘Hello World!’,如下图所示。

Output of the script

搜索和替换文本

现在您已经知道如何编辑和保存文件,是时候学习做一些稍微高级的事情了:搜索和替换字符串!

要搜索字符串,请按照以下步骤进行。

1. 首先,如果还没有打开,请在 Nano 编辑器中打开文本文件。

2. 一旦打开了文本文件,请按下键盘上的CTRL+W以调用Where Is命令。

3. 接下来,在搜索提示旁边输入要搜索的字符串,然后按 Enter 键。下面的示例将搜索单词Hello

Searching for a string

如果文件中存在该字符串,则您的光标将移动到其旁边,如下所示。

Finding the string

要搜索并替换字符串,请按照以下步骤进行。

1. 在键盘上按下CTRL+\以打开搜索和替换菜单。在搜索(要替换)提示旁边,键入要替换的字符串,然后按 Enter 键。

Searching for the word ‘Hello’

2. 接下来,在替换为提示处,键入新单词并按 Enter 键。在下面的示例中,替换词将是再见。

Replacing the word

3. 最后,选择只替换当前实例或文件中所有匹配词的所有实例。选择如下:

  • 要替换单个实例,请按Y
  • 要替换所有实例,请按A
  • 要跳过此实例,请按N
  • 要取消替换操作,请按CTRL+C

在此示例中,按Y以替换当前实例。

Confirming the search and replace operation

Nano 将在替换操作成功时显示已替换的次数,如下图所示。

Replace occurrence count

4. 在键盘上按CTRL+X退出 Nano 并按Y保存缓冲区。重新运行你的脚本。新消息‘再见,世界!’将被打印在你的终端上。

The script output

使用 Vim 作为 PowerShell 文本编辑器

Vim 提供比 Nano 更多的功能,例如会话恢复、语法着色、窗口分割和自动完成。Nano 用于快速文件编辑,而 Vim 也是 IDE 的轻量替代品。

但是,Vim 提供的额外功能是以学习曲线更陡峭为代价的。但不要灰心。Vim 是一个很棒的编辑器值得学习。

安装 Vim

现在是时候开始安装 Vim 了。

1. 以管理员身份打开 PowerShell

2. 在 PowerShell 终端中,执行以下命令安装 Vim 编辑器。

choco install vim -y

3、要验证 Vim 版本,请运行以下命令。vim --v

vim --version
Verifying the Vim version

编辑和保存文件

现在您已经安装了 Vim,是时候动手学习如何编辑文件了。在继续之前,您应该知道 Vim 中有不同的模式。每种模式的行为不同,并影响您可以在编辑器中执行的操作。

三种常用的模式是:

  • 普通 – 这是您打开 Vim 时的默认模式。该模式允许您浏览文本文件,但不能添加新文本。
  • 插入 – 这个模式允许您编辑文件。要进入此模式,请在键盘上按 i(大小写不敏感)。要退出并返回普通模式,请按 ESC
  • 命令 – 在此模式下,Vim 允许您调用命令,例如保存文件、退出 Vim 或查看帮助文档

接下来让我们开始在 Vim 中编辑文件,按照以下步骤进行。

1. 要在 Vim 中打开文件,请运行 vim 命令,后跟要打开的文件名。下面的命令打开了 myPowerShellScript.ps1 文件。

vim myPowerShellScript.ps1

Vim 文本编辑器将打开,如下图所示。请注意,PowerShell 命令 ‘Write-Host’ 和消息 ‘Hello World!’ 显示为不同的颜色,因为 Vim 支持语法着色。

The Vim opening view in normal mode

如果您需要查看 Vim 帮助文档,请键入 :h 并按 Enter 键。在正常模式下按下 : 字符会切换到 Vim 命令模式,而 h 表示打开帮助文件。要退出帮助文档,请键入 :q 并按 Enter 键返回正常模式。

接下来,通过按下 i 进入插入模式。当您进入插入模式时,编辑器底部会显示文本 -- INSERT --,如下图所示。

Vim in insert mode

3. 现在您处于插入模式,可以随意编辑文件。箭头键可让您在编辑器内移动光标。

4. 编辑完成后,按 Esc 返回正常模式。

5. 输入命令 :wq 并按 Enter 键保存并关闭文件。命令 w 保存文件,而 q 退出 Vim。

Saving the file and existing Vim

搜索和替换文本

按照以下步骤在 Vim 中搜索字符串。

1. 在 Vim 中打开要编辑的文件。

2. 在 Vim 编辑器中,要搜索字符串,请运行以下命令,其中 <string> 是您要搜索的字符串。

:/<string>

例如,要搜索单词 Hello,请键入:

:/Hello

Vim 会突出显示匹配的单词,如下图所示。

要浏览匹配文本的多个实例,请按 n 移动到下一个匹配项,按 N 键移动到上一个匹配项。

Vim highlighting the matching words

3. 最后,要替换整个文件中的每个字符串实例,请运行下面的命令,其中<old>是要替换的文本,<new>是替换文本。

:%s/<old>/<new>/g

例如,下面的命令将把单词Hello替换为单词Goodbye

:%s/Hello/Goodbye/g
Performing a search and replace in Vim

因此,Vim 将会替换文本,如下所示。

Vim showing the search and replace results

4. 输入命令:wq并按 Enter 键保存并关闭文件。重新运行脚本。输出将显示您的新消息。

The script output

使用 Emacs 作为 PowerShell 文本编辑器

像 Vim 一样,Emacs 提供的功能比 Nano 多。此外,Emacs 也是一个集成开发环境 (IDE)。Emacs 的一些特性包括语法着色、同时编辑多个文件以及自动缩进。

Emacs 相对于本教程中的其他编辑器的另一个好处是 Emacs 是无模式的。Emacs 也是完全可定制的。如果 Emacs 没有提供某些功能,您可以使用Emacs Lisp自己添加支持。

安装 Emacs

按照以下步骤安装 Emacs。

1. 以管理员身份打开 PowerShell,如果尚未打开。

2. 在 PowerShell 终端中,运行以下命令使用 Chocolatey 安装 Emacs。 `choco install emacs -y`

choco install emacs -y

3. 运行以下命令验证已安装的 Emacs 版本。 `emacs --version`

choco install emacs -y

您应该会看到类似于下图的输出,显示了计算机上的 Emacs 版本。

Displaying Emacs version

编辑和保存文件

您已经安装了 Emacs。下一步是什么?立即开始编辑文本文件,看看 Emacs 的效果。按照以下步骤编辑和保存文本文件。

1. 要在 Emacs 中打开文件,请在 PowerShell 中运行 emacs 命令,后跟文件名。下面的命令打开 myPowerShellScript.ps1 文件进行编辑。-nw 开关告诉 emacs 在当前终端窗口(PowerShell)中打开编辑器,而不是在单独的 GUI 中打开。emacs -nw myPowerShellScript.ps1

emacs -nw myPowerShellScript.ps1

编辑器顶部将有几个下拉菜单可用。要查看 Emacs 帮助文档,请单击“帮助”下拉菜单。

Opening a file in Emacs

2. 根据需要编辑文件,完成编辑后,通过连续按下 CTRL+XCTRL+S 来保存更改。您将在编辑器底部看到文件保存确认,如下所示。

Saving the file

3. 要退出编辑器,请在键盘上按下 CTRL+X,然后按 CTRL+C

搜索和替换文本

现在您已经了解了 Emacs 的基础知识,如何进行搜索和替换操作呢?按照以下步骤进行操作。

1. 按下CTRL+S并在I-search提示旁边输入文本以搜索文本。下面的示例搜索单词Hello

Searching for text

2. 要启动搜索和替换选项,请在键盘上按ALT+%(与ALT+SHIFT+5相同)。

3. 接下来,在Query replace:提示旁边输入要搜索的文本,然后按Enter键。

Searching for the text to replace

4. 接下来,在提示旁边输入替换文本,然后按Enter键。

Entering the replacement text

5. 最后,在Query replacing <old text> with <new text>:提示处,按!以确认并替换所有文本的出现。

Replacing all instances of the matching text

结果,Emacs已替换文本,如下所示。此外,Emacs在编辑器底部显示了替换的文本数量。

Emacs replaced the search text

6. 通过在键盘上按CTRL+X,然后按CTRL+C退出编辑器。重新运行脚本。输出将显示您的新消息。

The script output

结论

通过本教程,您已经学会了使用三个PowerShell文本编辑器的基础知识以及每个编辑器的优点。下次您需要从终端编辑文件时,不要浪费时间设置外部文本编辑器。只需打开Nano、Vim或Emacs,并在几个按键中进行更改!

你最喜欢哪个 PowerShell 文本编辑器?你知道其他在这个教程中没有提到的文本编辑器吗?

Source:
https://adamtheautomator.com/powershell-text-editor/