cortar caracter cadena buscar javascript intellij-idea phpstorm semicolon webstorm

caracter - ¿Cómo puedo configurar la tormenta web para agregar automáticamente puntos y comas a funciones, métodos, etc. de JavaScript?



buscar caracter en cadena javascript (8)

Cuando escribo Javascript, utilizo puntos y comas. Sin embargo, cuando escribo en webstorm / phpstorm, completa automáticamente llaves y corchetes, pero no agrega automáticamente un punto y coma. Sí, sé que no se requiere según los estándares, bla, bla, pero esa es la forma en que codigo, y no estoy solo, mucha gente codifica de esta manera ...

Ejemplo:

var data = $.ajax({});

Normalmente, webstorm / phpstorm hará esto y dejará el cursor dentro de las llaves:

var data = $.ajax({})

Todo lo que quiero en el mundo es no tener que agregar el punto y coma manualmente y hacer que se complete automáticamente como noté en mi primer ejemplo.

¿Algunas ideas?


Normalmente, webstorm / phpstorm hará esto y dejará el cursor dentro de las llaves:

Todavía requiere acción manual, pero solo presionaría End y ; cada vez. Pero Ctrl + Derecha debería funcionar también, esas teclas están al alcance.

Continuamente presiono CTRL + S después de cada línea para guardar un documento, así que esto sería solo una pequeña molestia para mí ...


Crea una macro para mover al final de la línea e inserta el punto y coma. A continuación, asigne la macro a la tecla de medio punto. Por lo tanto, en cualquier punto de su tipeo puede terminar la línea de código.


No hay forma de insertarlo automáticamente, necesita usar la acción de Declaración completa ( Ctrl + Shift + Intro ).

También debe verificar que la opción Usar punto y coma para terminar sentencias esté habilitada en Settings | Code Style | JavaScript | Other pestaña


Puede hacer un acceso directo de macro y teclado:

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

Desde https://gist.github.com/umidjons/9383758

Sería mucho más fresco si hubiera una opción para hacerlo automáticamente, aunque ...



Sí, si lo dejas sin un Webstorm de punto y coma lo marcará como un unterminated statement y lo destacarás. Cuando estás en la línea (con el cursor) como la llave de cierre simplemente escribe:

Alt + Enter

Lo cual hará que aparezca el menú de la bombilla (corrige automáticamente o cambia cosas, no tengo un nombre mejor para eso).

Esperemos que si su código es correcto, o el corsé es el único símbolo en esa línea, la única opción que tiene es terminar la Terminate statement y se enfocará automáticamente, así que simplemente presione la tecla Enter para Webstorm para agregar el punto y coma.

De esta manera, le ahorra posicionar manualmente el cursor y escribir el punto y coma, pero simplemente manténgase en esa línea de alguna manera, y haga alt + enter + enter y allí lo tiene.

Sí, no está automáticamente allí, pero es más rápido y fácil.


Tener que presionar Ctrl + Shift + Enter y luego volver a estar entre corchetes cada vez no es una solución en mi mente.

Aquí hay una solución real:

Por lo general, quiere un punto y coma al final de una declaración justo cuando toca ''Shift + 9'' ¿verdad? Sin golpear alguna otra combinación loca en el teclado cada vez.

  1. Escriba una función en el editor;
  2. Justo antes de que escriba ''('' vaya a Edición> Macros> Iniciar grabación de macros;
  3. Escriba ''();'' y presione la tecla ''Izquierda'' 2 veces para volver a estar adentro;
  4. Vaya a Editar> Macros> Iniciar grabación macro y asígnele un nombre (por ejemplo, punto y coma automático; 5 Vaya a Preferencias> Apariencia y comportamiento> Mapa de teclas> Macros y haga clic derecho en ''punto y coma automático'', seleccione Añadir atajo de teclado y presione ''Mayús + 9'' ;
  5. Salga de las Preferencias y regrese al editor ¡pruébelo!

Puede hacer muchas variedades de esto dependiendo de sus necesidades. Por ejemplo, agregando las llaves entre ''({})'' o si usa ''()'' con más frecuencia sin la necesidad de un punto y coma al final, puede cambiar el atajo a ''Ctrl + Shift + 9'', y el habitual combo solo agrega el regular. ¡Tu preferencia!


Lo que quiero hacer

Mi objetivo era agregar un punto y coma al final de mi línea actual mientras mantengo la posición de mi cursor en el medio de la línea.

p.ej

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

Por qué quiero hacerlo

WebStorm muy bien "completa" la puntuación a medida que escribo, es decir, después de escribir el ({['' , se completa automáticamente a ({['' <<cursor here>> '']}) . Quiero asegurarme de incluir el punto y coma al final de la línea ahora antes de hacer más tipeo, porque podría olvidarlo más tarde. Sin embargo, después de agregar el punto y coma, quiero continuar escribiendo en la ubicación actual del cursor. Sé que puedo usar la finalización automática para agregar un punto y coma al final de la línea, pero esto deja el cursor al final de la línea, lo que me obliga a presionar la flecha hacia atrás varias veces. Además, a veces mi línea a medio completar no será la sintaxis correcta de JavaScript, por lo que la finalización podría no funcionar.

Por qué fue difícil

La solución parecía fácil: escribir una macro simple para saltar al final de la línea, escribir un punto y coma y regresar a mi ubicación original. El problema es que es difícil imaginar cómo convencer a WebStorm para que vuelva a mi ubicación original. Intenté establecer un marcador, ir al final de la línea, escribir un punto y medio y volver a mi marcador, pero eso no funciona porque, por lo que yo sé, los marcadores solo recuerdan la línea, no la columna. Intenté primero escribir texto de marcador de basura en mi ubicación actual (por ejemplo, xcursorx ), ir al final de la línea, escribir un punto y medio y hacer un simple find de mi marcador de basura, pero eso tampoco funciona porque las macros de WebStorm no funcionan Parece jugar muy bien al ingresar texto en la rutina de find . Intenté primero escribir el texto del marcador de basura, yendo al final de la línea, escribiendo un punto y coma, y ​​usando Navigate/Last Edit Location y eliminando la basura, pero eso tampoco funciona.

Lo que eventualmente funcionó

Hice una macro de la siguiente manera (los atajos de teclado que se muestran en pasos individuales son los del mapa de teclas "Mac OS X 10.5+" ... use los accesos directos o las opciones de menú que sean apropiados para su configuración):

  • comenzando con el cursor / cursor en la ubicación deseada, comience a grabar una macro (es decir, Edit > Macros > Start Macro Recording )
  • escriba un único carácter no espacial / no verbal, por ejemplo, un punto
  • Inmediatamente después, escriba una sola "palabra" de texto de marcador de basura que no usará en ningún otro lugar, por ejemplo, "xcursorx".
  • Inmediatamente después, escriba otro carácter no espacial / no verbal, por ejemplo, otro período (es decir, que haya escrito ".xcursorx").
  • saltar al final de la línea (ej. comando-flecha derecha)
  • escriba un punto y coma
  • Inmediatamente después del punto y coma (es decir, sin espacio), escriba la misma "palabra" única del texto del marcador de basura nuevamente, pero sin los caracteres adyacentes que no sean espacio / palabra, por ejemplo, escriba "; xcursorx"
  • mueve el cursor hacia atrás una "palabra" (por ejemplo, opción-flecha izquierda)
  • encuentre la palabra en el cursor (es decir, Edit > Find > Find Word at Caret ) ( no use el find normal mientras escribe "xcursorx" manualmente)
  • borre el texto seleccionado (es decir, presione la tecla borrar o retroceder para eliminar el segundo "xcursorx" al final de la línea)
  • encuentre la ocurrencia previa del último texto seleccionado (es decir, Edit > Find > Find Previous/Move to Previous Occurrence o shift-command-G); esto seleccionará el "xcursorx" dentro del ".xcursorx".
  • borre el texto seleccionado (es decir, presione la tecla borrar o retroceder)
  • avanzar un carácter (es decir, flecha hacia la derecha, después del segundo período)
  • borre dos caracteres (es decir, haga clic en eliminar o retroceder dos veces para eliminar los dos períodos)
  • detener la grabación de macro (es decir, Edit > Macros > Stop Macro Recording )
  • dale un nombre a tu macro (ej. ''lugar-punto-color-al-final-de-línea'')
  • Dale a tu macro un atajo de teclado (por ejemplo, Preferences > (scroll down to) Macros > place-semicolon-at-end-of-line > (right click) > Add Keyboard Shortcut ... e ingresa el atajo que deseas, por ejemplo, opción- punto y coma)

Explicación de algunos pasos oscuros

No todos los pasos anteriores son necesarios para algunos casos de uso. por ejemplo, no es necesario agregar los períodos adicionales para que esto funcione en el ejemplo de la parte superior usando func([{''''}]) . Sin embargo, los pasos adicionales son necesarios para algunos casos de borde, por ejemplo, si su cursor ya está al final de la línea.

Cómo usarlo

Para usar la macro, comience con su tipeo normal (en el ejemplo de la parte superior, escriba func([{'' causando func([{''''}]) para que aparezca), escriba su atajo (por ejemplo, opción-punto y coma), y punto y coma aparecerá al final de la línea, pero el cursor permanecerá donde estaba.

Advertencia

Esta solución es un poco un hack, ya que la pantalla salta un poco a medida que el texto basura se inserta y luego se elimina. Sin embargo, al menos funciona. Si alguien puede descubrir cómo lograr el mismo objetivo final sin requerir texto de marcador de basura, sería genial.