Ich habe in meiner .vrimrc niedliche kleine Makros, die C++-Style-Kommentare aus dem Code hinzufügen/entfernen:
" Entferne C++-Style-Kommentar
nmap _ :s/^[ \t]*\/\///==:nohls
" Kommentiere Zeile, C++-Style
nmap - :s/^[ \t]*/\/\/ /==:nohls
Diese funktionieren, indem sie das Muster am Anfang der Zeile durch ein anderes ersetzen. In einem Fall wird // hinzugefügt und in einem anderen werden die Schrägstriche entfernt (wenn sie gefunden werden).
Das Problem, auf das ich stoße, ist, dass diese Makros Suchen-und-Ersetzen verwenden. Dadurch werden unerwünschte Suchmuster in die Suchhistorie von vim gespeichert und diese überladen.
Betrachten Sie die Sequenz:
- Nach 'hello' gesucht
- Verwenden des Makros, um eine Zeile zu kommentieren
- Erneutes Suchen (durch Eingabe von 'n' oder /,Loslassen der Taste, Enter)
- Ergebnis: Die Suche sucht nicht nach 'hello', weil das Suchmuster auf das gesetzt ist, was das Makro verwendet hat, nämlich ^[ \t]*
Wie kann dieses Makro modifiziert werden, um keine unerwünschten Muster in die Suchhistorie einzufügen?