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

当我写Javascript,我使用分号。 但是,当我在webstorm / phpstorm中写入时,它会自动完成大括号和括号,但不会自动添加分号。 是的,我知道这不是每个标准所要求的,等等,但是这就是我编码的方式 – 我并不孤单,许多人用这种方式编码…

例:

var data = $.ajax({}); 

webstorm / phpstorm通常会这样做,并将光标留在大括号内:

 var data = $.ajax({}) 

所有我想要的是不必手动添加分号,只要自动完成,就像我在第一个例子中提到的那样。

有任何想法吗?

没有办法自动插入它,你需要使用Complete Statement操作( Ctrl + Shift + Enter )。

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

您可以制作一个macros和键盘快捷键:

 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

如果有一个选项可以自动完成的话,会更酷

我想做的事

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

例如

 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. ie I now want this, with as few // keystrokes as possible: // // Add this semi-colon... // | // | // V func([{''}]); // /\ // || // || // ...while maintaining this cursor position 

为什么我想要做到这一点

WebStorm很好地“填写”了我input的标点符号,也就是在我键入({[' ,它会自动完成({[' <<cursor here>> ']}) ,我想确保包含分号在行结束之前, 现在我做更多的input,因为我可能会忘记。然后,添加分号后,我想继续键入当前的光标位置。我知道我可以使用自动完成添加分号在行的末尾,但是这将光标留在行的末尾,迫使我多次点击后退箭头,而且,有时候我的半完成行还不是正确的JavaScript语法,完成可能不工作。

为什么很难

解决scheme看起来很简单:编写一个简单的macros来跳转到行尾,键入一个分号,然后返回到我的原始位置。 问题是,很难弄清楚如何哄WebStorm回到我原来的位置! 我尝试设置一个书签,去行结束,input一个分号,然后返回到我的书签,但这是行不通的,因为,据我所知,书签只记住行,而不是列。 我试着先在当前位置(例如xcursorx )input垃圾标记文本,然后input行号,input一个分号,然后简单地find我的垃圾标记文本,但是这样做不起作用,因为WebStorm的macros不是“ t似乎很好地将文本input到find例程中。 我试着先input垃圾标记文本,直到行结束,input分号,然后使用Navigate/Last Edit Location并删除垃圾,但这也行不通。

什么最终工作

我做了一个macros,如下所示(各个步骤中显示的键盘快捷键是来自“Mac OS X 10.5+”键盘映射的键盘快捷键…使用适合您的设置的快捷键或菜单选项):

  • 从光标/插入符号开始在所需的位置,开始录制macros(即Edit > Macros > Start Macro Recording
  • 键入单个非空格/非单词字符,例如句号
  • 在那之后立即input一个垃圾标记文本的单词,你不会在其他地方使用,比如“xcursorx”
  • 之后立即键入另一个非空格/非单词字符,例如另一个句点(即,您现在已经键入“.xcursorx”。)
  • 跳转到行的末尾(例如命令右箭头)
  • 键入一个分号
  • 紧跟在分号(即没有空格)之后,再次input垃圾标记文本的同一单个“单词”,但没有侧面的非空格/非单词字符,例如键入“; xcursorx”
  • 将光标移回一个“单词”(例如选项左箭头)
  • 在光标处find这个单词(即Edit > Find > Find Word at Caret )(在手动input“xcursorx”时不要使用正常find
  • 删除选定的文本(即点击删除或退格键来删除行尾的第二个“xcursorx”)
  • find最近一次select的文本(即Edit > Find > Find Previous/Move to Previous Occurrence或shift-command-G); 这将在“.xcursorx”中select“xcursorx”。
  • 删除选定的文本(即点击删除或退格键)
  • 前进一个字符(即右箭头,到第二个时段之后)
  • 删除两个字符(即删除或退格两次,删除两个时间段)
  • 停止macros录制(即Edit > Macros > Stop Macro Recording
  • 给你的macros一个名字(例如'地方 – 在行尾的分号')
  • 给macros指定一个键盘快捷方式(例如, Preferences > (scroll down to) Macros > place-semicolon-at-end-of-line > (right click) > Add Keyboard Shortcut …并input你想要的快捷方式,分号)

某些模糊步骤的解释

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

如何使用它

要使用这个macros,首先使用正常的types(在顶部的例子中,inputfunc([{'使func([{''}])出现),键入你的快捷方式(例如option-semicolon)分号将出现在行的末尾,但您的光标将保留在原来的位置。

警告

这个解决scheme有点破解,因为垃圾文本被插入然后删除,显示器会跳转一点。 但是,至less它是有效的。 如果任何人都可以想出如何在不需要垃圾标记文本的情况下完成相同的最终目标,那就太棒了。

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

是的,如果你没有分号,那么Webstorm就会把它标记为unterminated statement终止的unterminated statement并强调它。 当你在行上(用光标)作为右大括号时,input:

 Alt + Enter 

这将调出灯泡菜单(自动更正或更改的东西,我没有一个更好的名字)。

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

这样可以节省你手动定位光标和自己input分号,但只是在那一行上,并做alt +进入+进入,你有它。

是的,它不是自动的,但它更快更简单。

webstorm / phpstorm通常会这样做,并将光标留在大括号内:

仍然需要手动操作,但我只是打结束 ; 每次。 但Ctrl + Right也应该工作,那些键是可以达到的。

每行后我都连续按CTRL + S来保存文件,所以这对我来说只是一个小小的麻烦。

不得不按Ctrl + Shift + Enter,然后回到括号中,这在我看来并不是一个解决scheme。

这是一个真正的解决scheme:

当你正确地点击“Shift + 9”时,你通常需要在语句末尾添加分号。 每次在键盘上都不会碰到其他的疯狂组合。

  1. 在编辑器中input一个函数;
  2. 就在你input'('去编辑>macros>开始macroslogging;
  3. 键入'();',并点击'左'键两次,所以你回到里面;
  4. 转到编辑>macros>开始macros录制并命名(例如自动分号; 5转到首选项>外观和行为>键盘>macros,并右键单击'自动分号',select添加键盘快捷键,然后按'Shift + 9' ;
  5. 退出首选项并返回编辑器testing它!

你可以根据你的需要做出许多变化。 例如,在“({})”之间添加花括号,或者如果最后使用“()”而不需要分号,则可以将快捷键更改为“Ctrl + Shift + 9”组合只是增加了常规。 您的偏好!

创build一个macros来移动到行的末尾并插入分号。 然后将macros分配给分号键击。 因此,在你input的任何时候,你都可以终止这行代码。