Подтвердить что ты не робот

Как я могу настроить webstorm для автоматического добавления полуколоней в функции javascript, методы и т.д.

Когда я пишу Javascript, я использую точки с запятой. Однако, когда я пишу в webstorm/phpstorm, он автоматически завершает скобки и скобки, но не добавляет автоматически точку с запятой. Я знаю, что это не требуется в соответствии со стандартами и т.д., Но то, как я пишу код, и я не одинок, многие люди так пишут.

Пример:

var data = $.ajax({});

Обычно webstorm/phpstorm сделает это и оставит курсор внутри фигурных скобок:

var data = $.ajax({})

Все, что мне нужно, - это не добавлять точку с запятой вручную, а выполнять ее автозаполнение, как я уже отмечал в своем первом примере.

4b9b3361

Ответ 1

Невозможно вставить его автоматически, вам нужно использовать действие Complete Statement (Ctrl + Shift + Enter).

Вам также необходимо проверить, что параметр Использовать точку с запятой для завершения операторов включен в Settings | Code Style | JavaScript | Other.

Ответ 2

Вы можете сделать макрос и сочетание клавиш:

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

Было бы намного круче, если бы была возможность сделать это автоматически, хотя...

Ответ 3

Что я хочу делать

Моя цель состояла в том, чтобы добавить полуточку в конец текущей строки, сохраняя позицию курсора в середине строки.

например.

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." )
  • перейти в конец строки (например, стрелка вправо командной строки)
  • введите полуточку
  • сразу после запятой (т.е. нет пробела), введите одно и то же единственное "слово" текста маркера мусора снова, но без фланкирующих символов без пробела/не-слова, например. type "; xcursorx"
  • переместите курсор назад на одно слово (например, стрелка влево-вправо)
  • найдите слово под курсором (т.е. Edit > Find > Find Word at Caret) (не используйте обычный find при вводе вручную в "xcursorx" )
  • удалить выделенный текст (т.е. нажать клавишу удаления или возврата, чтобы удалить второй "xcursorx" в конце строки)
  • найти предыдущее вхождение последнего выбранного текста (т.е. Edit > Find > Find Previous/Move to Previous Occurrence или shift-command-G); это выберет "xcursorx" в ".xcursorx".
  • удалить выделенный текст (т.е. нажать клавишу delete или backspace)
  • перейти вперед один символ (т.е. стрелка вправо, после второго периода)
  • удалить два символа (т.е. дважды нажать delete или backspace, чтобы удалить два периода)
  • остановить запись макроса (т.е. 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([{''}])), введите свой ярлык (например, параметр-точка с запятой), и появится полуколока в конце строки, но ваш курсор останется там, где он был.

Caveat

Это решение немного взломано, поскольку дисплей немного подпрыгивает, когда текст мусора вставляется и затем удаляется. Однако, по крайней мере, это работает. Если кто-то может понять, как выполнить ту же конечную цель, не требуя текста маркера мусора, это было бы здорово.

Ответ 4

Вы можете использовать этот https://github.com/yyx990803/semi. Предоставьте cli и api для удовлетворения ваших потребностей.

Ответ 5

Вы можете использовать eslint:

установите правило "semi" на "error" или 2

в файле, который вы хотите добавить Fix ESLint Problems запятой, щелкните правой кнопкой мыши и выберите " Fix ESLint Problems в нижней части меню.

right click menu

Ответ 6

Для IntelliJ Idea 2018 выполните следующие действия:

  • Открыть настройки: Ctrl + Alt + S
  • Редактор> Стиль кода> JavaScript
  • Выберите вкладку> Пунктуация
  • В раскрывающемся списке выберите "Использовать/Использовать всегда" точку с запятой для завершения операторов
  • Применить и ОК

Это добавит дополнительную точку с запятой в JS.

Ответ 7

Да, если вы оставите его без полуторного дна Webstorm, отметьте его как unterminated statement и выделите его. Когда вы находитесь на линии (с помощью курсора) в качестве закрывающей скобки, просто введите:

Alt + Enter

Что вызовет меню лампочек (автоматически корректирует или изменяет материал, у меня нет лучшего имени для него).

Надеюсь, что если ваш код верен или скобка является единственным символом в этой строке, единственный вариант, который у вас есть, будет Terminate statement, и он будет автоматически сфокусирован, поэтому просто нажмите клавишу ввода для Webstorm, чтобы добавить запятая.

Этот способ позволяет вам вручную позиционировать курсор и набирать полуколону самостоятельно, но просто как-нибудь на этой линии, и сделайте alt + enter + enter и там у вас есть.

Да, это не автоматически, но это быстрее и легче.

Ответ 8

Обычно webstorm/phpstorm будет делать это и оставлять курсор внутри фигурных скобок:

По-прежнему требуется ручное действие, но я бы просто нажал End и ; каждый раз. Но Ctrl + Right также должен работать, эти ключи находятся в пределах досягаемости.

Я постоянно ударяю CTRL+S после каждой строки, чтобы сохранить документ, поэтому это было бы лишь незначительной неприятностью для меня.

Ответ 9

Чтобы нажать Ctrl + Shift + Enter, а затем вернуться в скобки, каждый раз это не решение.

Здесь вещественное решение:

Как правило, вы хотите, чтобы точка с запятой была в конце инструкции сразу, когда вы нажмете "Shift + 9" справа? Не нажимая на какую-либо другую сумасшедшую комбинацию на клавиатуре каждый раз.

  • Введите функцию в редакторе;
  • Перед тем, как ввести "(" перейти в "Редактирование" > "Макросы" > "Запуск макросъемки";
  • Введите "();" и дважды нажмите клавишу "Влево", чтобы вернуться внутрь;
  • Перейдите в меню "Редактирование" > "Макросы" > "Запустить макросъемку" и назовите ее (например, auto-semicolon; 5 Перейдите в раздел "Настройки" > "Внешний вид" и "Поведение" > "Клавиатура" > "Макросы" и щелкните правой кнопкой мыши "авто-точка с запятой", выберите "Добавить комбинацию клавиш" и нажмите "Shift + 9";
  • Настройки выхода и обратно в редакторе проверьте это!

Вы можете сделать много вариантов этого в зависимости от ваших потребностей. Например, добавив фигурные скобки между "({})" или если вы используете "()" чаще, без необходимости в точке с запятой в конце, вы можете изменить ярлык на "Ctrl + Shift + 9", а обычный комбо просто добавляет регулярный. Ваши предпочтения!

Ответ 10

Создайте макрос, чтобы перейти в конец строки и вставить точку с запятой. Затем назначьте макрокоманду нажатию клавиши с полдюжиной. Таким образом, в любой момент вашего ввода вы можете завершить строку кода.