Powershell忽略了复制粘贴的代码片段中的制表符,这很烦人,因为我喜欢用单个制表符而不是四个空格来编写Python代码,而且在测试中我经常复制粘贴代码片段来测试它们。
到目前为止,我一直在使用其他终端,如Cygwin,正确地处理粘贴的标签,但它会更方便,我使用Powershell。如何使它正确地处理这些粘贴的标签?
MWE是将任何带标签的内容复制粘贴到Powershell中,例如test
在Powershell中显示为>>> test
,没有缩进。我从Notepad和Notepad++复制粘贴了相同的效果;我没有使用任何格式化的文字处理器或类似的东西。
3条答案
按热度按时间6yt4nkrj1#
警告:* 下一节 * 仅适用于 *PowerShell自己的 * 交互式提示。不同的规则可能适用于 * 从 * PowerShell启动的外部程序,这些程序会显示自己的交互式提示,例如
python
,最好是ipython
-有关这些程序的特定注意事项,请参阅 * 下一节 *。直接粘贴 * 到PowerShell的交互式提示符 * 时保留选项卡:
注意:严格地说,当它起作用时,制表符在粘贴时会转换为 *4个空格 *。
仅当满足以下 * 所有 * 先决条件时才起作用:
conhost.exe
)值得注意的是,这绝对不包括 Windows PowerShell(其中选项卡以
^I
结尾)。从PowerShell或
cmd.exe
粘贴到交互式python
/ipython
REPL时保留选项卡:注意事项:
python
相比,ipython
提供了上级的REPL体验。cmd.exe
启动。ipython
conhost.exe
):python
conhost.exe
):Properties
对话框的Options
选项卡上关闭Filter clipboard contents on paste
, 就可以使用Ctrl-V和右键单击;粘贴 * 实际制表符 *。tzxcd3kk2#
我能够使这个工作的唯一方法是使用Windows终端。这是微软构建的一个新的终端应用程序,支持一大堆新功能。
我不知道技术上的原因,但它似乎支持适当地粘贴制表符和空格,而不会丢失或转换到Python CLI REPL中。
我在运行Windows PowerShell、PowerShell Core 7+和命令提示符时,在运行Python CLI和所有支持的粘贴选项卡时,使用Windows终端对此进行了测试。
您可以通过许多来源安装Windows终端... Windows商店,二进制下载,WinGet,Choco等.
下面是github repo,其中包含各种安装方法的说明。
https://github.com/microsoft/terminal
ct3nt3jp3#
一般来说,使用control-v粘贴字符比使用右键单击效果更好。注意control-v必须绑定到psreadline的粘贴函数(因此没有emacs模式)。下面是一个a和一个em破折号的示例(0x 2013)。右键单击只会粘贴a。