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

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

пример:

var data = $.ajax({});

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

var data = $.ajax({})

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

какие идеи?

9 ответов


нет способа вставить его автоматически, вам нужно использовать Заполнить Заявление акции (Ctrl+Shift+Enter).

вы также должны проверить, что используйте точку с запятой для завершения операторов опция включена в Settings | Code Style | JavaScript | Other tab.


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

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. 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)
  • введите один символ без пробела / без слова, например a точка
  • сразу после этого введите одно "слово" текста маркера мусора, который вы не будете использовать нигде, например "xcursorx"
  • сразу после этого введите еще один символ без пробела/без слова, например, другой период (т. е. теперь вы набрали ".xcursorx.")
  • перейти к концу строки (например, Command-стрелка вправо)
  • введите двоеточие
  • сразу после запятой (т. е. без пробела) введите одно и то же " слово" текст маркера мусора снова, но без фланговых символов без пробелов/без слов, например, введите"; xcursorx"
  • переместить курсор назад на одно слово (например, Option-стрелка влево)
  • найдите слово в курсоре (т. е. Edit > Find > Find Word at Caret) (do не использовать обычный find при вводе вручную "xcursorx")
  • удалить выделенный текст (т. е. нажать клавишу delete или backspace, чтобы удалить второй "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 ... и введите нужный ярлык, например option-точка с запятой)

объяснение некоторых неясных шагов

не все вышеуказанные шаги необходимы для некоторых случаев использования. например, добавление дополнительных периодов не требуется для этого, чтобы функционировать в Примере вверху, используя func([{''}]). Однако, дополнительные шаги необходимы для некоторых крайних случаев, например, если курсор уже находится в самом конце строки.

Как Его Использовать

чтобы использовать макрос, начните с обычного ввода (в Примере вверху введите func([{' причинив func([{''}]) чтобы появиться), введите ярлык (например, option-точка с запятой), и в конце строки появится двоеточие, но курсор останется там, где он было.

предостережение

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


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


можно использовать eslint:

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

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

right click menu


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

Alt + Enter

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

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

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

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


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

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

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


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

вот реальное решение:

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

  1. введите функцию в Редакторе;
  2. прямо перед вводом ' ('перейдите в меню Правка > макросы > запустить макрос Запись;
  3. Введите "(); "и нажмите клавишу "влево" 2 раза, чтобы вы вернулись внутрь;
  4. перейти к правке > макросы > начать запись макросов и назвать его (например, авто-точка с запятой; 5 перейдите в Настройки > Внешний вид и поведение > Keymap > макросы и щелкните правой кнопкой мыши "авто-точка с запятой", выберите Добавить сочетание клавиш и нажмите "Shift+9";
  5. Exit Preferences и обратно в Редакторе проверить его!

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


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