Necesito una forma de eliminar las sangrías iniciales (pestañas y espacios) de los datos copiados al portapapeles desde Notepad ++.
Los datos en el documento Notepad ++ deberían seguir teniendo estas sangrías iniciales y los datos copiados al portapapeles no deberían.
Este comportamiento debe iniciarse solo con CTRL + C y solo cuando estoy dentro de Notepad ++.
Esto es lo que sucede en Notepad ++ cuando marco el texto regularmente con el mouse:
Eso es lo que debería estar en el portapapeles después de marcar el texto regularmente y copiarlo:
Notas:
- Las imágenes son solo para ilustrar mejor mi necesidad: mis códigos reales son más largos.
- También pregunté sobre esto aquí .
- Pregunto esto porque no puedo pegar bloques de código sangrados en la terminal de Linux si estos bloques de código incluyen
cat
documentos aquí (tiene que ver con el procesamiento de delimitadores de documentos aquí, una larga historia).
windows-10
notepad++
clipboard
JohnDoea
fuente
fuente
:set paste
.cat
heredocs, lo es .Respuestas:
Considere el siguiente script de AutoHotKey (AHK). Consulte el Tutorial y la documentación de AutoHotkey para obtener más explicaciones sobre los scripts de AutoHotkey.
Después de instalar AutoHotKey, presione Ctrl+ Shift+ co xdentro de Notepad ++ para copiar (o cortar) al portapapeles con las líneas recortadas.
Nota: utilicé Ctrl+ Shiftpara poder seguir utilizando la copia original y cortar normalmente solo con Ctrl. Si no le gusta este comportamiento, simplemente elimine
+
ambos+^c::
y+^v::
.Vea los comentarios (comenzando con
;
) para obtener una explicación. Al igual que con cualquier codificación, es mejor dejarlo en los comentarios para comprender mejor el guión cuando vuelva a leerlo más tarde.fuente
ctrl+z
para recuperar el contenido eliminado. Esto es un poco problemático. ¿Entiendo que se podría utilizar algo como el siguiente código?if !LangID := EN { return }
. Agregarlo al comienzo de la secuencia de comandos trajo un error y envolver la secuencia de comandos con una versión similar más unelse { return }
error después del cierre, pero no funcionó.TrimClipboard(){ ... }
dentro de unaif
declaración. Ponga laif
declaración dentro de la función, o alrededor de los comandosSend, ... TrimClipboard()
Simplemente use
Alt + Mouse dragging
oAlt + Shift + Arrow keys
para seleccionar la columna, luegoCtrl+C
copie la columna.Vea este ejemplo: https://notepad-plus-plus.org/fr/features/column-mode-editing.html
Editar:
También podemos seleccionar la columna completa, o incluso más de una columna, también podemos seleccionar una o varias filas.
Aquí hay una manera simple de hacerlo:
Haga clic con el botón izquierdo al comienzo de la selección deseada.
Vaya a la ubicación donde debe detenerse la selección deseada
Mueva el cursor a esa segunda y última ubicación, con:
ALT
+SHIFT
y aleft click
, simultáneamente, para seleccionar las columnas y filas deseadas.Espero que esto ayude
fuente
Aquí hay una solución portable-ish que usa Java
El primer paso es, por supuesto, instalar Java
Luego, pegue lo siguiente en un archivo nombrado
Trimmer.java
en su directorio de usuarios (C: \ Users \ your_name)Luego, abra un símbolo del sistema y escriba
Ahora debería tener un archivo Trimmer.class en la misma carpeta. Puede eliminar el archivo Trimmer.java ahora.
En este punto, tenemos un programa que eliminará todos los espacios en blanco iniciales y finales de cada línea en el portapapeles, pero aún necesitamos una forma de ejecutarlo convenientemente. ¡Hagamos una tecla de acceso rápido para ello!
Primero, cree un acceso directo al símbolo del sistema (haga clic con el botón derecho en C: \ Windows \ System32 \ cmd.exe)
Luego, haga clic derecho en este acceso directo y seleccione "Propiedades". Hay algunas cosas que debemos hacer en esta ventana. En la pestaña "Acceso directo", debería haber una opción "Destino" que diga algo como
Cámbialo para decir
Esto hará que el símbolo del sistema simplemente ejecute nuestro programa y salga cuando usemos este acceso directo.
A continuación, haga clic en el cuadro "Tecla de acceso directo" y presione la tecla de acceso rápido que desea activar el reemplazo de texto. ¡Recomiendo Ctrl+ Shift+ Cpara facilitar su uso!
Finalmente, cambie la opción "Ejecutar" a "Minimizado" ya que no queremos que una ventana parpadee en la pantalla cada vez que usemos el acceso directo.
Después de todo esto, debería poder usar el siguiente flujo de trabajo:
fuente
Tal vez me falta algo, pero todas las otras respuestas parecen complicar demasiado la solución. Si entendí correctamente, todo lo que quiere hacer es eliminar los espacios en blanco iniciales (espacios o pestañas) y tiene los datos disponibles en Notepad ++
En cuyo caso la solución es simple. Abre tu archivo en
Notepad++ >> Search >> Replace... or Ctrl+H
Encuentra qué :
^( *)[ ]|^\t*
Reemplazar con : dejar en blanco
Para encontrar todo el espacio inicial que utilizamos
^( *)[ ]
y para encontrar todas las pestañas principales, utilizamos^\t*
, como tal, para encontrar todo el espacio inicial o todas las pestañas principales que utilizamos el operador o|
. Asegúrese de que la expresión regular esté seleccionada en la ventana de reemplazo.Debería terminar bastante rápido, incluso si se trata de un archivo grande. Cierre la ventana Reemplazar y simplemente seleccione Todo (Ctrl + A) >> Copiar (Ctrl + C)
fuente
Mi respuesta se basa en la respuesta de Steven, que marqué como correcta (sin embargo, tuve algunos problemas e intenté editar aunque mi edición fue rechazada).
Este es el código que mejor funcionó para mí:
Diferencias con el código original de Steven:
Send, ^c
ySend, ^x
conSend, ^{sc02e}
ySend, ^{sc02d}
, respectivamente. Esto evita un error de eliminación de texto en modo hebreo y algunos otros modos de idioma que no sean inglés).fuente