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

tvp*_*pmb 57 javascript phpstorm webstorm

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

例:

var data = $.ajax({});
Run Code Online (Sandbox Code Playgroud)

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

var data = $.ajax({})
Run Code Online (Sandbox Code Playgroud)

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

有任何想法吗?

Cra*_*der 82

无法自动插入,您需要使用完整语句操作(Ctrl+ Shift+ Enter).

您还需要检查|中是否启用了使用分号来终止语句选项 | | 标签.SettingsCode StyleJavaScriptOther

  • 在Mac上,使用Command + Shift + Enter在PhpStorm中的当前行之后添加分号. (13认同)
  • 是的,这基本上就是我发现的.它令人沮丧,因为它几乎更容易关闭自动完成,只是继续键入而不是然后将我的手移到箭头键并导航以添加分号.:( (4认同)
  • “使用分号终止语句”选项现在位于“设置”中 | 编辑 | 代码风格 | JavaScript | 标点 (3认同)
  • 并且不要忘记将“新代码”更改为“始终”。 (2认同)

ric*_*cka 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
Run Code Online (Sandbox Code Playgroud)

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

如果可以选择自动执行,那将会更酷!


Kap*_*are 8

对于 IntelliJ Idea 2018,请按照以下步骤操作:

  • 打开设置:Ctrl+ Alt+S
  • 编辑器>代码风格>JavaScript
  • 选择 Tab > 标点符号
  • 在下拉列表中,选择“使用/始终使用”分号来终止语句
  • 申请并确定

这将在 JS 中添加额外的分号。

  • 加上提示,但您必须选择“始终使用”分号来终止语句 (2认同)

小智 7

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

这是 webstorm 的方法:

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

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

然后,无论何时格式化代码,使用快捷方式 OPTION+CMD+L 都会添加分号

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


And*_*ems 6

我想做的事

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

例如

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
Run Code Online (Sandbox Code Playgroud)

我为什么要这样做

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

为什么这么难

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

最终的工作原理

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

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

一些模糊步骤的解释

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

如何使用它

要使用宏,请从正常输入开始(在顶部的示例中,键入func([{'导致func([{''}])出现的内容),键入快捷键(例如选项 - 分号),分号将出现在行的末尾,但是光标将保持原样.

警告

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