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

问题描述 投票:53回答:10

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

例:

var data = $.ajax({});

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

var data = $.ajax({})

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

javascript phpstorm webstorm
10个回答
76
投票

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

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


0
投票

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


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

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


6
投票

我想做的事

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

EG

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

为什么这么难

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

最终的工作原理

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

  • 从所需位置的光标/插入符开始,开始录制宏(即Edit > Macros > Start Macro Recording
  • 键入单个非空格/非单词字符,例如一段时间
  • 紧接着之后,键入一个垃圾标记文本的单个“单词”,你不会在其他任何地方使用,年龄光标“
  • 紧接着之后,键入另一个单个非空格/非单词字符,例如另一个时期(即你现在输入“.xcursorx。”)
  • 跳到行尾(例如命令右箭头)
  • 键入一个分号
  • 紧接在分号后(即没有空格),再次键入垃圾标记文本的相同单个“单词”,但没有侧面的非空格/非单词字符,例如输入“; xcursorx”
  • 将光标向后移动一个“单词”(例如选项左箭头)
  • 在光标处找到单词(即Edit > Find > Find Word at Caret)(手动输入“xcursorx”时不要使用正常的find
  • 删除所选文本(即点击删除或退格键删除行尾的第二个“xcursorx”)
  • 找到上次出现的最后一个选定文本(即Edit > Find > Find Previous/Move to Previous Occurrence或shift-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([{''}])出现),键入快捷键(例如选项 - 分号),分号将出现在行的末尾,但你的光标将保持原样。

警告

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


1
投票

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


1
投票

You can use eslint

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

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

right click menu


1
投票

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

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

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


0
投票

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

Alt + Enter

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

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

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

是的,它不会自动出现,但它更快更容易。


0
投票

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

仍需要手动操作,但我只需点击End;每次。但是Ctrl + Right也可以工作,这些键都可以使用。

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


0
投票

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

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

当你点击'Shift + 9'时,你通常会在语句结尾处想要一个分号吗?每次都不会在键盘上遇到其他疯狂的组合。

  1. 在编辑器中键入一个函数;
  2. 在您输入'('转到编辑>宏>开始宏录制之前;
  3. 输入'();'然后点击'左'键2次,这样你就可以回到里面;
  4. 转到编辑>宏>开始宏录制并命名(例如自动分号; 5转到首选项>外观和行为>键盘>宏并右键单击'自动分号',选择添加键盘快捷键并按'Shift + 9' ;
  5. 退出首选项并返回编辑器测试它!

您可以根据需要制作多种产品。例如,在“({})”之间添加花括号,或者如果更频繁地使用'()'而不需要在结尾处使用分号,则可以将快捷方式更改为“Ctrl + Shift + 9”,并且通常组合只是添加常规。你的偏好!

© www.soinside.com 2019 - 2024. All rights reserved.