In meinem habe ~/.vimrc
ich einen Befehl, der ungefähr so definiert ist:
nnoremap <expr> <Leader>n ':new ~/Notes/' . strftime('%F') . '-'
Es dient zum Erstellen von Notendateien, die das aktuelle Datum im Dateinamen enthalten. Die Tastenkombination soll meinen Cursor in der Befehlszeile belassen, damit ich das Thema der Notiz eingeben und drücken kann Return.
Dies funktioniert von innen heraus gut. Ich versuche jedoch auch, einen Terminalbefehl anzugeben, mit dem ich vim öffnen und diesen Befehl dann auslösen kann. Ich habe es versucht:
vim -c '\n'
(Mein Leader ist auf den Standardwert von eingestellt \
, den ich lieber nicht ändern möchte.)
Dies funktioniert jedoch nicht - stattdessen wird bei der Verarbeitung der Befehlszeile nur ein Fehler erkannt: E10: \ sollte gefolgt von / ,? oder & . Ich bin mir nicht sicher, ob dies ein Fehler in vim ist oder ob ich etwas falsch mache. Ich habe auch versucht:
vim -c '<Leader>n'
Dies führt jedoch zu folgenden Fehlern : Fehler bei der Verarbeitung der Befehlszeile: E488: Nachgestellte Zeichen: n Drücken Sie die EINGABETASTE oder geben Sie den Befehl ein, um fortzufahren .
Gibt es eine Möglichkeit, das zu erreichen, was ich will?
quelle
-c
führt im normalen Modus keine Tastenkombinationen aus; Es führt Befehle aus (was Sie normalerweise tun :). Sie müssen also denexecute
Befehl verwenden, der zu funktionieren scheint:Wir brauchen das Double,
\\
weil wir einen Shell-Befehl ausgeben (und nicht möchten, dass die Shell dies als Escape-Sequenz interpretiert).Getestet mit der Tastenkombination:
Ich kann nicht
:execute "normal <Leader>t"
zur Arbeit kommen; den Wert des Erhaltensmapleader
ist auch etwas beteiligt , da Sie eine Fehlermeldung erhalten , wenn Sie nicht eingestelltmapleader
zu alles und verwenden Sie die Standardeinstellung\
.quelle
nnoremap <Leader>x ':new ~/Desktop/x.txt'
, um den <Ausdruck> zu entfernen. Abervim -c 'execute "normal \\x"'
gibt „Fehler erkannt , während Befehlszeile Verarbeitung: E78: Unbekannt Marke“. Irgendwelche Gedanken warum?VimEnter
Laufen bringen : - / ... Vielleicht ist eine bessere Lösung für dieses Problem die Verwendung des Autocmd oder eines ähnlichen? ... Ich habe momentan keine Zeit, Nachforschungen anzustellen. Wenn heute Abend niemand anderes eine Antwort findet, werde ich sie prüfen (ich werde diese Antwort für die Zeit belassen), weil dies so scheint eine Art, wenn ich auch etwas haben / benutzen möchte :-)Wenn Ihr Ziel darin besteht, Mapleader zu verwenden, und Sie es in Ihrer .vimrc neu definiert haben
lass mapleader = ','
das würde nicht funktionieren. Sie können verwenden
stattdessen.
Wenn Sie diese Funktionalität jedoch über die Befehlszeile verwenden möchten, ist es besser, die Funktionalität einer Funktion zu kapseln und direkt aufzurufen.
quelle