◆

WebStorm 解决代码复制后自动缩进问题

2023-02-02 01:370

从网页或者别的编辑器里复制一段代码粘贴到 WebStorm,经常会发现缩进被整段重排了:原本对齐好的 if 块被推到很深的位置,或者第一行贴着行首、后面几行凭空多出一大截空白。这是 WebStorm 的 Reformat on paste 在起作用,它会拿当前文件的代码风格去「纠正」粘贴进来的内容,遇到不完整的代码片段就容易纠正歪。

这篇记的就是把这个自动重排关掉的设置位置。改完之后粘贴进来的代码保持原样,需要格式化时我再手动按快捷键处理,结果可控得多。

设置位置

打开设置面板(macOS 是 Cmd + ,,Windows 是 Ctrl + Alt + S),进入 Editor → General → Smart Keys,找到 Reformat on paste 这一项。它是个下拉框,三个值的行为分别是:

  1. None:完全不动,粘贴什么就是什么,跨编辑器搬代码选这个最省心。
  2. Indent Block:只把整块内容按当前光标所在的缩进层级平移,不改块内部的相对结构。
  3. Indent Each Line:逐行重新计算缩进,也就是造成「缩进乱掉」的那个默认行为。

我自己一般选 Indent Block,既不破坏片段内部结构,又能让整块代码落在正确的层级上。

下图是这个设置项在 Smart Keys 面板里的位置,注意看 Reformat on paste 下拉框当前选中的值,改完记得点 Apply 保存。

WebStorm 设置面板 Editor - General - Smart Keys 中的 Reformat on paste 下拉选项

注意事项

  1. 这个设置是 IDE 级别的,对所有项目生效,不需要每个项目重新配一次。
  2. 关掉自动重排之后,格式化交给手动快捷键 Ctrl + Alt + L(macOS 是 Cmd + Option + L),配合项目里的 Prettier 或 ESLint 规则更可控。
  3. 如果粘贴后缩进还是会变,检查一下是不是装了 Prettier 插件并开了保存时自动格式化,那是另一条链路,得单独关。
💬留言板0

还没有留言,来发表第一条吧~

PAGE LOAD / LIVEWebStorm 解决代码复制后自动缩进问题加载中