Powershell无法识别复制并粘贴的制表符

rekjcdws  于 2022-12-13  发布在  Shell
关注(0)|答案(3)|浏览(303)

Powershell忽略了复制粘贴的代码片段中的制表符,这很烦人,因为我喜欢用单个制表符而不是四个空格来编写Python代码,而且在测试中我经常复制粘贴代码片段来测试它们。
到目前为止,我一直在使用其他终端,如Cygwin,正确地处理粘贴的标签,但它会更方便,我使用Powershell。如何使它正确地处理这些粘贴的标签?
MWE是将任何带标签的内容复制粘贴到Powershell中,例如test在Powershell中显示为>>> test,没有缩进。我从Notepad和Notepad++复制粘贴了相同的效果;我没有使用任何格式化的文字处理器或类似的东西。

6yt4nkrj

6yt4nkrj1#

警告:* 下一节 * 仅适用于 *PowerShell自己的 * 交互式提示。不同的规则可能适用于 * 从 * PowerShell启动的外部程序,这些程序会显示自己的交互式提示,例如python,最好是ipython-有关这些程序的特定注意事项,请参阅 * 下一节 *。

直接粘贴 * 到PowerShell的交互式提示符 * 时保留选项卡:

注意:严格地说,当它起作用时,制表符在粘贴时会转换为 *4个空格 *。

仅当满足以下 * 所有 * 先决条件时才起作用

  • 运行***PowerShell(核心)7+***(与 Windows PowerShell 相对)时
  • 通过Ctrl-V粘贴而不是通过右键单击粘贴时(后者 * 模拟键入 *,因此触发Tab键完成)。
  • 以下控制台环境之一中运行时:
  • 常规控制台窗口(conhost.exe
  • Windows终端机
  • 注意事项:
  • 在Visual Studio Code的集成终端(似乎总是 * 模拟 * PowerShell中的键入)中 * 不 * 工作。
  • 还没有尝试过第三方游戏机,如Cygwin和ConEmu。

值得注意的是,这绝对不包括 Windows PowerShell(其中选项卡以^I结尾)。

从PowerShell或cmd.exe粘贴到交互式python/ipython REPL时保留选项卡:

注意事项:

  • python相比,ipython提供了上级的REPL体验。
  • 与上述情况不同,以下情况也适用于从 Windows PowerShell 以及从cmd.exe启动。
  • 当它起作用时,粘贴的制表符将转换为 *4个空格 *,除非另有说明。
    ipython
  • 常规控制台窗口(conhost.exe):
  • 仅在使用Ctrl-V时有效。
  • Windows Terminal
  • 仅在使用Ctrl-V时有效。
  • X1 E1 F1 X的集成终端:
  • 不工作(剥离标签)。
    python
  • 常规控制台窗口(conhost.exe):
    • 只要在控制台窗口的Properties对话框的Options选项卡上关闭Filter clipboard contents on paste 就可以使用Ctrl-V和右键单击;粘贴 * 实际制表符 *。
  • Windows终端机:
  • 工作,仅使用右键单击(!);粘贴 * 实际制表符 *。
  • Visual Studio代码的集成终端:
  • 工作。
tzxcd3kk

tzxcd3kk2#

我能够使这个工作的唯一方法是使用Windows终端。这是微软构建的一个新的终端应用程序,支持一大堆新功能。
我不知道技术上的原因,但它似乎支持适当地粘贴制表符和空格,而不会丢失或转换到Python CLI REPL中。
我在运行Windows PowerShell、PowerShell Core 7+和命令提示符时,在运行Python CLI和所有支持的粘贴选项卡时,使用Windows终端对此进行了测试。
您可以通过许多来源安装Windows终端... Windows商店,二进制下载,WinGet,Choco等.
下面是github repo,其中包含各种安装方法的说明。
https://github.com/microsoft/terminal

ct3nt3jp

ct3nt3jp3#

一般来说,使用control-v粘贴字符比使用右键单击效果更好。注意control-v必须绑定到psreadline的粘贴函数(因此没有emacs模式)。下面是一个a和一个em破折号的示例(0x 2013)。右键单击只会粘贴a。

a–

相关问题