【问题标题】:How to type a tab (indent) in comments in PowerShell ISE?如何在 PowerShell ISE 的注释中键入制表符(缩进)?
【发布时间】:2014-09-04 07:31:11
【问题描述】:

这很奇怪。

我知道选项卡用于 PowerShell ISE 中的命令完成,所以很好。但是,它也会弄乱编辑窗格。

这样做:

  1. 文件 > 新建(Untitled1.ps1 打开)

  2. 按制表符(没关系,你会得到一个缩进)

  3. 输入回车,#(评论),然后按 Tab 预期:一个会在散列后缩进 实际:将哈希替换为$PSVersionTable 或命令提示符历史记录中的任何内容! (制表符和 Shift 制表符在它们之间循环)

这是否意味着没有人在 PowerShell 脚本中使用 cmets 中的选项卡,或者没有人在 PowerShell 脚本中使用 cmets?

我可以在任何地方关闭此行为吗?

此外,行为似乎不一致。如果我例如输入##,有时tab不完成(它也不进入tab)。

其他人可以复制吗?

系统: 视窗 8.1 专业版 PowerShell ISE

【问题讨论】:

  • 我可以重现这个。而且 TAB 补全甚至在 cmets 中也能正常工作!
  • 但只有当我在#之后输入一个空格
  • 谢谢。那么它是一个错误..?我不知道为什么有人会想要那个。无论如何,PowerShell 上手非常烦人。这只是靴子里的一小块石头。
  • @Alireza 我不认为这是一个错误。正如我的回答中提到的,我发现它很有用。
  • 无论如何 PSISE 将选项卡替换为 4 个空格(或仅足够的空格以到达最近的 Column%4 -eq 0 或 4 的倍数)都无关紧要。如果需要制表符,请使用空格。或者先输入标签,然后添加#。或者按照建议粘贴标签。

标签: powershell powershell-ise


【解决方案1】:

要回答主要问题,您可以输入 Alt+09(使用数字键盘)输入<Tab>

对于所描述的行为,我认为这是预期的行为。您可以通过键入 # 和上一个命令的一部分然后重复按 Tab 来完成历史记录,这将向后循环匹配历史记录。单独键入 # 将匹配从最后一个命令开始的所有历史记录。

 Does this mean no-one uses tabs within comments in PowerShell scripts?

轶事,但我从未在单行注释中使用制表符,但我确实经常在多行 cmets 中使用制表符,它们由 <##> 括起来。例如。

<#
Functions
    Get-Foo
    Get-Bar

Variables
    $Foo
    $Bar
#>

Function Get-Foo { ...

使用多行 cmets,自动完成不会成为问题。

, or that no-one uses comments in PowerShell scripts?

我不知道为什么行为会暗示这一点;我总是使用一个空格来开始一行注释。

我发现这在开发脚本时很有帮助,因为如果我不确定行为,我经常在命令窗格中尝试表达式,然后将表达式添加到脚本中(如果它有效)。

所以,我的工作流程是:

  1. Ctrl-D 转到命令窗格
  2. 键入命令
  3. 如果命令执行我想要的操作,Ctrl-I 转到脚本窗格
  4. 键入#&lt;Tab&gt;,该行将添加到脚本中。

【讨论】:

  • 谢谢,很好的评论阐明了它是如何工作的。另外,我还没有学习多行 cmets 的语法。有道理,以一种奇怪的方式。
  • 当没有自动完成候选时,TAB 仍然不能作为内联 cmets 或块 cmets 内的 TAB 工作。似乎在 cmets 之外表现正确..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-10
  • 1970-01-01
  • 1970-01-01
  • 2015-11-05
  • 1970-01-01
相关资源
最近更新 更多