如何设置webstorm以自动将分号添加到javascript函数,方法等

时间:2012-08-04 01:09:24

标签: javascript phpstorm webstorm

当我写Javascript时,我使用分号。但是当我在webstorm / phpstorm中编写时,它会自动完成大括号和括号,但不会自动添加分号。我知道这不是按照标准等要求的,但这就是我编码的方式 - 而且我并不孤单,很多人用这种方式编码。

示例:

var data = $.ajax({});

通常,webstorm / phpstorm会执行此操作,并将光标留在大括号内:

var data = $.ajax({})

在我想要的世界中,所有这一切都是不必手动添加分号并让它像我在第一个例子中所说的那样自动完成。

12 个答案:

答案 0 :(得分:75)

无法自动插入,您需要使用完整声明操作( Ctrl + Shift + 输入)。

您还需要检查Settings |中是否启用使用分号终止语句选项Code Style | JavaScript | Other标签。

答案 1 :(得分:10)

您可以制作宏和键盘快捷键:

Record Auto semicolon macro and bind shortcut to it:
1. Edit -> Macros -> Start Macro Recording
2. In the editor go to the end of line by pressing End
3. put semicolon ';'
4. Edit -> Macros -> Stop Macro Recording
5. Give a name, for example 'Auto semicolon'
6. Open settings (Ctrl + Alt + s), select Keymap
7. Expand Macros node
8. Select 'Auto semicolon', in the context menu choose Add Keyboard Shortcut
9. Set Ctrl + ; as First keystroke
10. Save/Apply settings
11. Enjoy!
12. Try it so, in the middle of code line, hit Ctrl + ;

// some useful combinations:
Ctrl + ,    put colon at the end of line
Ctrl + ;    put semicolon at the end of line
Ctrl + .    put => at the end of line

来自https://gist.github.com/umidjons/9383758

如果可以选择自动执行,那将会更加凉爽......

答案 2 :(得分:6)

我想做什么

我的目标是在当前行的末尾添加一个分号,同时将光标位置保持在行的中间。

e.g。

func([{''}])
//     /\
//     ||
//     ||
//     current cursor position
//
// Now I want to add a semi-colon to the end-of-the-line
// but then continue typing my string contents at the same
// cursor location. i.e. I now want this, with as few
// keystrokes as possible:
//
//          Add this semi-colon...
//          |
//          |
//          V
func([{''}]);
//     /\
//     ||
//     ||
//     ...while maintaining this cursor position

我为什么要这样做

WebStorm很好地完成了#34;我输入的标点符号,即在我输入({['后,它会自动完成({[' <<cursor here>> ']})。我想确保在我做更多打字之前将分号包含在现在的行中,因为我可能会忘记以后。但是,添加分号后,我想继续在当前光标位置键入内容。我知道我可以使用自动完成在行的末尾添加一个分号,但是这会将光标留在行的末尾,迫使我多次点击后退箭头。此外,有时我的半完成行不会是正确的JavaScript语法,因此自动完成可能甚至不起作用。

为什么这么难

解决方案似乎很简单:编写一个简单的宏来跳转到行尾,输入一个分号,然后返回原来的位置。问题是,很难弄清楚如何诱使WebStorm返回原来的位置!我尝试设置一个书签,进入行结束,输入一个分号,然后返回到我的书签,但这并不起作用,因为据我所知,书签只记得该行,不是专栏。我尝试首先在当前位置键入垃圾标记文本(例如xcursorx),进入行结束,输入分号,然后执行简单的find垃圾标记文本,但这并不起作用,因为WebStorm的宏似乎不能很好地将文本输入find例程。我尝试先输入垃圾标记文本,进入行结束,输入分号,然后使用Navigate/Last Edit Location并删除垃圾,但这也不起作用。

最终工作

我按如下方式创建了一个宏(各个步骤中显示的键盘快捷键来自&#34; Mac OS X 10.5 +&#34;键映射...使用适合您的设置的快捷键或菜单选项):

  • 从所需位置的光标/插入符号开始,开始录制宏(即Edit > Macros > Start Macro Recording
  • 键入单个非空格/非单词字符,例如一段时间
  • 在此之后立即键入一个单词&#34;&#34;垃圾标记文本,你不会在其他任何地方使用,例如&#34; xcursorx&#34;
  • 紧接着
  • 之后,键入另一个单个非空格/非单词字符,例如另一个时期(即你现在输入&#34; .xcursorx。&#34;)
  • 跳到该行的末尾(例如,命令右箭头)
  • 键入分号
  • 在分号后立即(即没有空格),键入相同的单词&#34;字&#34;再次使用垃圾标记文本但没有侧翼的非空格/非单词字符,例如输入&#34 ;; xcursorx&#34;
  • 将光标向后移动一个&#34; word&#34; (例如选项左箭头)
  • 在光标处找到单词(即Edit > Find > Find Word at Caret)(手动输入&#34; xcursorx&#34;) not 使用正常find
  • 删除所选文本(即点击删除或退格键以删除第二行&#34; xcursorx&#34;在行尾)
  • 找到上次出现的最后一个选定文本(即Edit > Find > Find Previous/Move to Previous Occurrence或shift-command-G);这将选择&#34; xcursorx&#34;在&#34; .xcursorx。&#34;
  • 删除所选文本(即点击删除或退格键)
  • 前进一个角色(即右箭头,第二个时期后)
  • 删除两个字符(即点击删除或退格两次,删除两个句点)
  • 停止宏录制(即Edit > Macros > Stop Macro Recording
  • 为您的宏指定一个名称(例如,&#39;地点分号 - 在行尾&#39;)
  • 为您的宏提供键盘快捷键(例如Preferences > (scroll down to) Macros > place-semicolon-at-end-of-line > (right click) > Add Keyboard Shortcut ...并输入您想要的快捷方式,例如选项 - 分号)

一些模糊步骤的解释

对于某些用例,并非所有上述步骤都是必需的。例如使用func([{''}])在顶部的示例中不需要添加额外的句点。但是,某些边缘情况需要额外的步骤,例如:如果你的光标已经在行的最后。

如何使用

要使用该宏,请从正常输入开始(在顶部的示例中,键入导致func([{'的{​​{1}}),键入您的快捷方式(例如选项分号)和半-colon将出现在行尾,但光标将保持原样。

<强>买者

这个解决方案有点乱,因为显示确实会在插入垃圾文本然后删除时跳转一点。但是,至少它有效。如果有人能够弄清楚如何在不需要垃圾标记文本的情况下完成相同的最终目标,那就太棒了。

答案 3 :(得分:2)

您可以自动让webstorm或phpstorm为您添加分号。

这是网络风暴的方法:

首选项->编辑器->代码样式-> Javascript->标点符号

在用分号终止的语句中,始终选择

然后随时使用快捷方式设置代码格式  OPTION + CMD + L将添加分号

您还可以在保存时将重新格式化设置为自动。这样,分号将总是被添加。

答案 4 :(得分:1)

您可以使用此https://github.com/yyx990803/semi。 提供cli和api以满足您的需求。

答案 5 :(得分:1)

You can use eslint

"semi"规则设置为"error"2

在要添加分号的文件中单击鼠标右键,然后选择菜单底部附近的Fix ESLint Problems

right click menu

答案 6 :(得分:1)

对于IntelliJ Idea 2018,请执行以下步骤:

  • 打开设置: Ctrl + Alt + S
  • Editor>代码样式> JavaScript
  • 选择标签>标点符号
  • 在下拉菜单中,选择“使用/始终使用”分号以终止语句
  • 应用并确定

这将在JS中添加多余的分号。

答案 7 :(得分:0)

是的,如果你在没有分号的情况下离开它,Webstorm会将其标记为unterminated statement并突出显示它。当你在线上(用光标)作为右括号时,只需输入:

Alt + Enter

这将打开灯泡菜单(自动更正或更改内容,我没有更好的名称)。

希望如果你的代码是正确的,或者大括号是该行中唯一的符号,你唯一的选择是Terminate statement并且它会自动聚焦,所以只需按下Webstorm的回车键即可添加分号。

这样可以避免手动定位光标并自己输入分号,但只是以某种方式在该行上,并执行alt +输入+输入,然后就可以了。

是的,它不是自动存在的,但它更快更容易。

答案 8 :(得分:0)

  

通常,webstorm / phpstorm会执行此操作,并将光标留在大括号内:

仍然需要手动操作,但我每次只需按结束; 。但是 Ctrl + 也应该可以使用,这些键都可以使用。

我在每行保存文件后不断点击 CTRL + S ,所以这对我来说只是一个小麻烦......

答案 9 :(得分:0)

必须按Ctrl + Shift + Enter然后每次回到括号中都不是我脑海中的解决方案。

这是一个真正的解决方案:

当您点击Shift + 9&#39;时,通常需要在语句结尾处添加分号。对?每次都不会在键盘上遇到其他疯狂的组合。

  1. 在编辑器中键入一个函数;
  2. 在您输入&#39;之前(&#39;转到编辑&gt;宏&gt;开始宏录制;
  3. 输入&#39;();&#39;然后点击“左”&#39;关键2次,以便你回到里面;
  4. 转到修改&gt;宏&gt;启动宏录制并命名(例如自动分号; 5转到首选项&gt;外观&amp;行为&gt;键盘映射&gt;宏和右键单击&#39;自动分号&#39;,选择添加键盘快捷键,然后按&#39; Shift + 9&#39;;
  5. 退出首选项并返回编辑器测试它!
  6. 根据您的需要,您可以根据需要制作多种产品。例如,在&#39;({})&#39;之间添加花括号。或者如果您使用&#39;()&#39;更常见的是,最后不需要分号,您可以将快捷方式更改为“Ctrl + Shift + 9”,而通常的组合只会添加常规。你的偏好!

答案 10 :(得分:0)

创建一个宏以移动到行尾并插入分号。然后将宏指定给分号键击。因此,在您输入的任何时候,您都可以终止代码行。

答案 11 :(得分:0)

在最新的 2020.3 中,您可以在这里找到:

enter image description here