Digamos, por ejemplo, que tengo una línea de texto muy larga en una sola línea en VS Code (supongamos que el ejemplo que se da a continuación es muy largo).
0xffffffffeeeeeeee02020202aaaaaaaa
Al principio coloqué el cursor después de los caracteres 0x
. (el cursor se indica con el |
carácter en el ejemplo a continuación)
0x|ffffffffeeeeeeee02020202aaaaaaaa
Luego quiero agregar más cursores después de cada N caracteres del cursor actual. En este caso, N es igual a 8 y quiero hacer esto dos veces para agregar dos cursores más como en el ejemplo a continuación.
0x|ffffffff|eeeeeeee|02020202aaaaaaaa
Entonces, después de presionar la siguiente secuencia de teclas en el teclado, en este caso, esas secuencias de teclas son ,(space)0x
, debería poder obtener este resultado final.
0x, 0x|ffffffff, 0x|eeeeeeee, 0x|02020202aaaaaaaa
Después de anular la selección de los cursores, debería obtener esto
0x, 0xffffffff, 0xeeeeeeee, 0x02020202aaaaaaaa
¿Es esto posible de hacer en el código VS?
Solución del problema
Hay una expresión regular sencilla que puede hacer lo que quieras:
Encontrar:^0x|(.{8})(?!$)
Pero debe habilitar la Find in Selection
opción y activar el Select All Matches
comando usted mismo después de ingresarlo.
O use una extensión de macro como comando múltiple y esta combinación de teclas para automatizarlo:
{
"key": "alt+p",
"command": "extension.multiCommand.execute",
"args": {
"sequence": [
"editor.action.addSelectionToNextFindMatch",
{
"command": "editor.actions.findWithArgs",
"args": {
"findInSelection": true,
"isRegex": true,
"searchString": "^0x|(.{8})(?!$)",
}
},
"editor.action.selectAllMatches",
"cursorRight"
]
},
}
Ahora simplemente coloque el cursor en cualquier lugar o justo después de la palabra que desea dividir y active la macro.
Aquí está el método regex puro sin extensiones:
^0x|(.{8})(?!$)
en su Find Widget con la opción regex habilitada.^0x
la primera parte de la cadena en la que finalmente desea un cursor después.
(.{8})(?!$)
seleccione cada bloque de 8 caracteres, pero no el último, es por eso que hay una búsqueda anticipada negativa para el final de la línea (?!$)
, por lo que los últimos 8 caracteres no coinciden. No se preocupe, habrá un cursor delante de esos últimos 8 caracteres como desee. (.{8})
en realidad no necesita estar en un grupo de captura, simplemente es más claro de ver.
Seleccione todo el texto para que coincida: 0xffffffffeeeeeeee
. Detenga la selección allí, donde quiera que esté el último cursor.
Habilite la Find in Selection
opción en el Widget de búsqueda por Alt+ L.
Alt+ Enterpara seleccionar todas las coincidencias encontradas respetando la Find in Selection
opción: editor.action.selectHighlights
.
El paso (4) seleccionará sus coincidencias; debe tener 4 para la cadena anterior. Pero no desea que se seleccionen las coincidencias, solo desea un cursor al comienzo de cada una, así que haga el paso (5):
Flecha derecha: esto cancela cada selección con un cursor en el extremo derecho de cada uno.
Tipo.
No hay comentarios:
Publicar un comentario