如何解决Powershell无法识别复制粘贴代码段中制表符的问题
解决PowerShell粘贴时丢失制表符的方法
方法1:调整PSReadLine模块配置(适用于绝大多数预装PSReadLine的PowerShell版本)
现在主流PowerShell版本都默认预装PSReadLine模块,制表符被吞的核心原因是该模块默认将制表符识别为补全触发键,修改对应配置即可解决:
- 临时生效(仅当前打开的PowerShell会话有效):直接执行命令:
Set-PSReadLineKeyHandler -Key Tab -Function SelfInsert
该配置会把制表符的行为从触发补全修改为直接插入制表符字符,粘贴进来的制表符会正常保留。 - 永久生效:
- 执行
echo $PROFILE获取PowerShell配置文件的本地路径 - 如果对应路径下的文件不存在,手动新建后缀为
.ps1的同名文件 - 把上述
Set-PSReadLineKeyHandler -Key Tab -Function SelfInsert命令写入该文件,保存后重启PowerShell即可永久生效。
- 执行
方法2:修改控制台原生设置(适用于未安装PSReadLine的旧版PowerShell)
- 右键PowerShell窗口顶部的标题栏,选择「属性」
- 切换到「选项」标签页,取消勾选「编辑选项」分类下的「筛选粘贴内容」选项
- 点击「确定」保存设置即可,后续粘贴的制表符不会被自动过滤。
针对Python REPL的额外补充
如果是在Python交互环境(>>>提示符)下粘贴丢失缩进,完成上述PowerShell设置后,还可以在进入Python REPL后先执行:import pyreadline; pyreadline.parse_and_bind('tab: self-insert')
即可保证Python交互环境下的制表符正常识别。
内容的提问来源于stack exchange,提问作者BGreen
相关产品推荐
相关产品推荐

