Tecla de acceso rápido para terminar la línea con un punto y coma y saltar a una nueva línea en Sublime Text 2


Estoy tratando de averiguar una tecla de acceso rápido en el trabajo. Acabo de conseguir este trabajo y estoy usando una Mac por más o menos la primera vez en mi vida.

De vuelta a casa en mi computadora portátil, cuando uso Eclipse, me parece recordar que había una sola tecla de acceso rápido que ambos:

  • Añadir un ; al final de mi línea actual (no importa dónde el carete estaba dentro de dicha línea)
  • Coloque el cursor al principio de una nueva línea, con el mismo nivel de sangría que la línea que tenía se ha añadido un punto y coma a

¿Alguien sabe si se trataba de una tecla de acceso rápido específica de un Eclipse, o sabe de una manera de replicar dicha tecla de acceso rápido en Sublime Text 2?

Author: madth3, 2013-05-21

6 answers

La mejor solución para esto es grabar una macro en Sublime Text y luego asignarla a un atajo de teclado. Siga estos pasos:

  1. Crea una línea como alert('hola') y deja el cursor a la derecha después de la letra "o".
  2. Luego vaya a Herramientas > Grabar una macro para comenzar a grabar.
  3. Pulse Comando+ para ir al final de la línea.
  4. Prensa ; y pulsa Enter
  5. Detenga la grabación de la macro yendo a Herramientas > Detener la grabación Macro
  6. Ahora puede probar su macro mediante Herramientas > Macro de reproducción (opcional)
  7. Guarde su macro yendo a Herramientas > Guardar Macro (ej: EndOfLine.sublime-macro)
  8. Crear un acceso directo mediante la adición de esto entre los corchetes en su en sus preferencias > Enlaces de teclas-Archivo de usuario:

    {
    "keys": ["super+;"], "command": "run_macro_file", "args": {"file": "Packages/User/EndOfLine.sublime-macro"}
    }
    
  9. Ahora, cada vez que se pulsa Comando+;, se mágicamente coloque el punto y coma al final de línea actual y mueva el cursor a la siguiente línea.

Feliz codificación!

 70
Author: drdiv,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-10 20:04:14

Después de leer su pregunta unas tres veces, finalmente me di cuenta de que estaba buscando una tecla de acceso rápido para realizar ambas operaciones. Ups.

Su solicitud suena como la Ctrl+Shift+; tecla de acceso rápido del complemento Punto y coma inteligente Eclipse. Si bien agregar punto y coma de un IQ de nivel genial probablemente requeriría un complemento Sublime Text 2 completamente nuevo, puede crear fácilmente un enlace de clave inteligente al estilo punto y coma con Sublime Text's Macros . ¡En realidad no sabía nada de ellos hasta ahora!

En este caso, grabar la macro usted mismo es en realidad la forma más rápida de crearla, en lugar de copiar y pegar un nuevo archivo (y ahora tendrá la experiencia para hacer más). Primero, abra un nuevo archivo y escriba su línea de basura favorita:

Lord Vetinari's cat|

Luego mueve el signo a cualquier lugar dentro de la línea:

Lord Veti|nari's cat

Ahora, presione Ctrl+Q , la tecla de acceso rápido para Tools -> Record Macro. Si el estado la barra está habilitada, le notificará que está "comenzando a grabar [una] macro". Pulse End (si usted no tiene un End clave, pase a la siguiente), entonces ;, entonces Introduce. Finalmente, presione Ctrl+Q de nuevo para detener la grabación. Cuando lo haga, la barra de estado mostrará "Macro de grabación detenida". Compruebe que su macro está funcionando pulsando Ctrl+Shift+Q en un segmento de código de su elección.

Simplemente presionando Enter ajustará la sangría en la siguiente línea en consecuencia, siempre y cuando el ajuste "auto_indent" se establezca en true. Véase Preferences -> Settings – Default, línea 59.

Cuando esté satisfecho, guarde su nueva macro con Tools -> Save Macro.... Yo salvé el mío como Packages/User/smart-semicolon.sublime-macro. Mi archivo se veía algo como esto; siéntase libre de copiarlo si no puede o no quiere hacer la macro manualmente:

[
    {
        "args":
        {
            "extend": false,
            "to": "eol"
        },
        "command": "move_to"
    },
    {
        "args":
        {
            "characters": ";"
        },
        "command": "insert"
    },
    {
        "args":
        {
            "characters": "\n"
        },
        "command": "insert"
    }
]

"extend": false, solo significa que la macro no agregará ningún texto a la selección de trabajo. Lea más sobre las opciones para los comandos en el Unofficial Docs Commands Page .

Ahora que tiene su macro, podemos darle un enlace de clave personalizado. Agregue las siguientes líneas a su archivo Preferences -> Key Bindings – User:

 { "keys": ["ctrl+shift+;"], "command": "run_macro_file", "args": {"file": "Packages/User/smart-semicolon.sublime-macro"}, "context":
      [
           { "key": "selector", "operator": "equal", "operand": "source.java" }
      ]
 },

Reemplazar Ctrl+Shift+; con cualquier clave de enlace que prefiera, guarde su archivo, y darle una oportunidad. La matriz "context" restringe el enlace de claves a archivos Java (consulte la página No oficial Docs Key Bindings para obtener más información sobre los contextos); si desea que el enlace de claves esté activo en todas partes, utilice esta línea en su lugar:

 { "keys": ["ctrl+shift+;"], "command": "run_macro_file", "args": {"file": "Packages/User/smart-semicolon.sublime-macro"} },

Este NetTuts+ article tiene mucha más información sobre macros y vincularlas a claves; lo referencié a menudo. Este UserEcho post parece que tiene más información sobre cómo hacer que la inserción sea más extensible.

 18
Author: angerson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:12

También puedes usar un paquete sublime ya hecho creado para este propósito: AppendSemiColon

Puede usar control de paquetes para instalarlo, simplemente busque "AppendSemiColon".

Place a semicolon at the end of the cursor's current line(s) by pressing:
Command+; on OS X
Ctrl+; on Windows and Linux

Y

You can also automatically go to the next line at the same time like this:
Command+Shift+; on OS X
Ctrl+Shift+; on Windows and Linux

He estado usando este paquete desde hace un tiempo, y funciona muy bien.

ACTUALIZAR: Como el autor mencionó en un comentario, ahora también puede cambiar las teclas de acceso rápido predeterminadas si lo desea (personalmente, me encantan los valores predeterminados). Como ejemplo, solo cambio:

[
  { "keys": ["ctrl+;"], "command": "append_semi_colon" }, 
  { "keys": ["ctrl+shift+;"], "command": "append_semi_colon", "args": {"enter_new_line": "true"} }
]

En su sublime-keymap para usar las teclas que desee.

Probé la última versión, y esta característica también funciona bien. Hubo un error en el que se agregaban puntos y coma adicionales incorrectamente al presionar teclas de acceso rápido adicionales-esta molestia menor también se ha corregido. Gracias, MauriceZ / mzee99!

 10
Author: nonbeing,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-04 13:52:33

Ctrl+Introduzca creará una nueva línea con el mismo nivel de indentación.

No pude encontrar nada como el Ctrl+A usted mencionó

 1
Author: Felipe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-23 09:09:16

Estoy en Sublime Text 3... inspirado por tu post, he añadido lo siguiente a mi .sublime-mapa de teclas:

{ "keys": ["ctrl+enter"], "command": "run_macro_file", "args": {"file": "Packages/User/endOfLine.sublime-macro"} },

Me sorprende cuánto tiempo ahorra esto.

 1
Author: JMichael,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-10 07:24:09

@Felipe cubrió el segundo punto. Puede imitar el comportamiento de la primera con una simple macro o plugin. Digo o porque no describiste la posición del cursor después de presionar la combinación de teclas. ¿Mueve el cursor a la siguiente línea? ¿Inserta una nueva línea? Creo que entiendes la idea.

Estoy bastante seguro de que eclipse funciona en OS X, así como en Windows, así que si te sientes más cómodo con eso, ¿por qué no usarlo (a menos que tu trabajo requiera ST, por supuesto)? La mayoría de las teclas probablemente el mismo / similar (bueno, probablemente es comando en lugar de control para los accesos directos).

Http://www.eclipse.org/downloads/?osType=macosx

Si continúa usando ST, probablemente valga la pena aprender los conceptos básicos de los complementos. Se puede construir mucho para que tenga el mismo comportamiento que otros editores, solo requiere un esfuerzo adicional (a través de la creación del complemento o la búsqueda de un complemento que lo haga) por adelantado.

 0
Author: skuroda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-21 23:38:45