Ich brauche eine Möglichkeit, führende Einrückungen (Tabulatoren und Leerzeichen) von Daten zu entfernen, die aus Notepad ++ in die Zwischenablage kopiert wurden.
Die Daten im Notepad ++ - Dokument selbst sollten weiterhin diese führenden Einrückungen aufweisen, und die in die Zwischenablage kopierten Daten sollten dies nicht tun.
Dieses Verhalten sollte nur durch STRG + C und nur dann ausgelöst werden, wenn ich mich in Notepad ++ befinde.
Folgendes passiert in Notepad ++, wenn ich den Text regelmäßig mit der Maus markiere:
Das sollte sich in der Zwischenablage befinden, nachdem ich den Text regelmäßig markiert und kopiert habe:
Anmerkungen:
- Die Bilder sollen nur meine Bedürfnisse besser veranschaulichen - meine tatsächlichen Codes sind länger.
- Ich fragte auch darüber hier .
- Ich frage dies, weil ich eingerückte Codeblöcke nicht in das Linux-Terminal einfügen kann, wenn diese Codeblöcke
cat
Heredokumente enthalten (hat mit der Verarbeitung von Heredokument-Begrenzern zu tun, eine lange Geschichte).
windows-10
notepad++
clipboard
JohnDoea
quelle
quelle
:set paste
.cat
heredocs einfügen - ist es .Antworten:
Betrachten Sie das folgende AutoHotKey (AHK) -Skript . Weitere Erläuterungen zu AutoHotkey-Skripten finden Sie im AutoHotkey-Tutorial und in der Dokumentation.
Drücken Sie nach der Installation von AutoHotKey Ctrl+ Shift+ coder xin Notepad ++, um die abgeschnittenen Zeilen in die Zwischenablage zu kopieren (oder auszuschneiden ).
Hinweis: Ich habe Ctrl+ verwendet, Shiftdamit Sie immer noch die Originalkopie verwenden und normal nur mit schneiden können Ctrl. Wenn Ihnen dieses Verhalten nicht gefällt, entfernen Sie es einfach
+
in beiden+^c::
und+^v::
.;
Eine Erklärung finden Sie in den Kommentaren (beginnend mit ). Wie bei jeder Codierung sollten Sie die Kommentare berücksichtigen, um das Skript besser zu verstehen, wenn Sie später darauf zurückkommen.quelle
ctrl+z
gelöscht werden und ich dann die gelöschten Inhalte wiederherstellen muss. Das ist etwas problematisch. Ich verstehe, dass so etwas wie der folgende Code verwendet werden könnte?if !LangID := EN { return }
. Das Hinzufügen zu Beginn des Skripts verursachte einen Fehler, und das Umbrechen des Skripts mit einer ähnlichen Version plus einemelse { return }
Fehler nach dem Schließen funktionierte nicht.TrimClipboard(){ ... }
in eineif
Anweisung einfügen. Fügen Sie dieif
Anweisung in die Funktion oder um die Befehle einSend, ... TrimClipboard()
Verwenden Sie einfach
Alt + Mouse dragging
oderAlt + Shift + Arrow keys
, um die Spalte auszuwählen und dannCtrl+C
, um die Spalte zu kopieren.Siehe dieses Beispiel: https://notepad-plus-plus.org/fr/features/column-mode-editing.html
Bearbeiten:
Wir können auch die gesamte Spalte oder sogar mehr als eine Spalte auswählen. Wir können auch eine oder mehrere Zeilen auswählen.
Hier ist eine einfache Möglichkeit, dies zu tun:
Linke Maustaste am Anfang der gewünschten Auswahl.
Gehen Sie zu der Stelle, an der die gewünschte Auswahl enden muss
Bewegen Sie den Cursor an die zweite und letzte Stelle mit:
ALT
+SHIFT
undleft click
gleichzeitig a, um die gewünschten Spalten und Zeilen auszuwählen.Ich hoffe das hilft
quelle
Hier ist eine portable Lösung mit Java
Der erste Schritt ist natürlich die Installation von Java
Trimmer.java
Fügen Sie als Nächstes Folgendes in eine Datei mit dem Namen in Ihrem Benutzerverzeichnis ein (C: \ Users \ your_name).Öffnen Sie dann eine Eingabeaufforderung und geben Sie Folgendes ein
Sie sollten jetzt eine Trimmer.class-Datei in demselben Ordner haben. Sie können die Datei Trimmer.java jetzt löschen.
Zum jetzigen Zeitpunkt haben wir ein Programm, das alle führenden und nachfolgenden Leerzeichen aus jeder Zeile in der Zwischenablage entfernt, aber wir brauchen noch eine Möglichkeit, es bequem auszuführen. Machen wir einen Hotkey dafür!
Erstellen Sie zunächst eine Verknüpfung zur Eingabeaufforderung (klicken Sie mit der rechten Maustaste auf C: \ Windows \ System32 \ cmd.exe).
Klicken Sie dann mit der rechten Maustaste auf diese Verknüpfung und wählen Sie "Eigenschaften". In diesem Fenster müssen wir einige Dinge tun. Auf der Registerkarte "Verknüpfung" sollte sich eine Option "Ziel" befinden, die so etwas wie sagt
Ändern Sie es, um zu sagen
Dies führt dazu, dass die Eingabeaufforderung einfach unser Programm ausführt und beendet, wenn wir diese Verknüpfung verwenden.
Klicken Sie anschließend auf das Feld "Tastenkürzel" und drücken Sie den Hotkey, der die Textersetzung auslösen soll. Ich empfehle Ctrl+ Shift+ Cfür die Benutzerfreundlichkeit!
Ändern Sie abschließend die Option "Ausführen" in "Minimiert", da nicht jedes Mal ein Fenster auf dem Bildschirm angezeigt werden soll, wenn Sie die Verknüpfung verwenden.
Nach alledem sollten Sie in der Lage sein, den folgenden Workflow zu verwenden:
quelle
Vielleicht fehlt mir etwas, aber alle anderen Antworten scheinen die Lösung zu komplizieren. Wenn ich richtig verstanden habe, ist alles, was Sie tun möchten, führende Leerzeichen (Leerzeichen oder Tabulatoren) zu entfernen und Sie haben die Daten in Notepad ++ verfügbar
In diesem Fall ist die Lösung einfach. Öffnen Sie Ihre Datei in
Notepad++ >> Search >> Replace... or Ctrl+H
Finden Sie was :
^( *)[ ]|^\t*
Ersetzen durch : leer lassen
Um alle von uns verwendeten führenden Leerzeichen
^( *)[ ]
und alle führenden Tabulatoren zu finden, verwenden wir^\t*
, um alle führenden Leerzeichen oder alle von uns verwendeten führenden Tabulatoren mit dem Operator oder zu finden|
. Stellen Sie sicher, dass im Ersetzungsfenster die Option Regulärer Ausdruck ausgewählt ist.Es sollte ziemlich schnell beendet werden, auch wenn es sich um eine große Datei handelt. Schließen Sie das Ersetzen-Fenster und wählen Sie Alle aus (Strg + A) >> Kopieren (Strg + C)
quelle
Meine Antwort basiert auf der Antwort von Steven, die ich als korrekt markiert habe (ich hatte jedoch einige Probleme damit und habe versucht, sie zu bearbeiten, obwohl meine Bearbeitung abgelehnt wurde).
Dies ist der Code, der für mich am besten funktioniert hat:
Unterschiede zum Originalcode von Steven:
Send, ^c
undSend, ^x
mitSend, ^{sc02e}
undSend, ^{sc02d}
sind. Dies verhindert einen Fehler beim Löschen von Texten im hebräischen Modus und in einigen anderen nicht englischen Sprachmodi.quelle