.vimrc verwendet den Dateinamen, der gerade bearbeitet wird

733
Nemoden

Ich habe ein Plugin für VIMdas grundsätzlich eine Schnittstelle für meine SVN( vcscommand.vim ) zur Verfügung steht. Und ich habe kartiert :VCSUpdateund :VCSCommitBefehle von vcscommand Plugin in meinem .vimrc. Alles ist perfekt bis auf eine Sache:

Nach dem Aufruf von: VCSCommit schreiben Sie normalerweise einen Kommentar wie folgt:

:VCSCommit I've made some minor changes to this file 

Im Bereitstellungssystem unseres Unternehmens wird nicht hervorgehoben, welche Datei festgeschrieben wurde. Daher schreiben wir unsere Kommentare normalerweise wie folgt:

:VCSCommit I've made some minor changes to file .vimrc 

Im Bereitstellungssystem sehen wir all diese Commits, so dass wir feststellen können, welche Datei auf den Produktionsserver hochgeladen werden soll, nachdem die Schaltfläche "Synchronisieren" gedrückt wurde.

Ich frage mich also, wie ich die Zuordnung für: VCSCommit so vornehmen kann, dass der Dateiname als Kommentar hinzugefügt wird. Mein Mapping bisher ist:

map <C-q> :VCSCommit 

Nach dem Drücken von Strg + Q wird dies :VCSCommitin der unteren Leiste angezeigt, aber ich möchte es sehen :VCSCOmmit my_file_name_that_i_m_editing_now.

Wie mache ich das?

2

2 Antworten auf die Frage

2
garyjohn

Das sollte es tun.

map <C-q> :VCSCommit <C-R>% 

Für mehr sehen Sie

:help c_CTRL-R 

BEARBEITEN

Um nur den Dateinamen einzufügen, wenn er %einen Pfad enthält, verwenden Sie diesen Befehl:

map <C-q> :VCSCommit <C-R>=expand("%:p:t")<CR> 

Der :pvorherige Dateiname wird um den vollständigen Pfad erweitert und :tder Endpunkt dieses Pfads wird übernommen. Sehen

:help expand() 
Hilft, aber es ist ein bisschen nicht das, was ich erwartet hatte. Es fügt den relevanten Pfad zur Datei ein, die ich von "pwd" bearbeite, und fügt also "include / somefile.php" ein. Wie bekomme ich nur eine somefile.php? Ich habe die Hilfe gelesen und den alternativen Dateinamen (`#`) ausprobiert ... immer noch nicht, was ich will :( Wenn Dateiname nicht eingefügt werden kann, gehe ich mit `% ` Nemoden vor 12 Jahren 0
@Nemoden: Kein Problem. Ich habe die Antwort aktualisiert. garyjohn vor 12 Jahren 0
Ich würde es nie verstehen. Vielen Dank! Nemoden vor 12 Jahren 0
0
mkomitee

Genau wie bei einem Fyi svn log -vwird Ihnen angezeigt, welche Dateien durch ein Commit geändert wurden. Das Hinzufügen des Dateinamens in der Commit-Nachricht sollte daher nicht unbedingt erforderlich sein.

Zuerst ohne -v:

% svn log -r2  ------------------------------------------------------------------------ r2 | mkomitee | 2011-05-27 08:56:02 -0400 (Fri, 27 May 2011) | 1 line  change ------------------------------------------------------------------------ 

Nun die gleiche Revision mit -v:

% svn log -vr2  ------------------------------------------------------------------------ r2 | mkomitee | 2011-05-27 08:56:02 -0400 (Fri, 27 May 2011) | 1 line Changed paths: M /baz  change ------------------------------------------------------------------------ %  
Es geht nicht um `svn` (in dem ich erfahren bin und wissen kann, wie man Änderungen auflistet, also bringt dein 'fyi` mein Wissen nicht voran), sondern um` vim` (in dem ich nicht so erfahren bin und Hilfe brauche). also entspricht diese Antwort nicht dem, was ich verlange. @garyjohn hat bereits eine anständige Antwort gegeben. Ich möchte jedoch nicht abstimmen. Nemoden vor 12 Jahren 0
Wahrscheinlich ist es mein Nachteil. Ich habe nicht gesagt, dass wir in unserem Bereitstellungssystem nicht sehen, welche Dateien geändert wurden, aber wir sehen nur Kommentare zu diesen Commits. Ich werde wahrscheinlich in nächster Zukunft einige Änderungen an unserem System vornehmen, wie etwa ein Pop-Fenster, in dem alle Informationen zu einem bestimmten Commit angezeigt werden, aber jetzt habe ich nicht mehr genug Zeit, um interne Software anzupassen. Daher müssen wir weiterhin filenate in die Kommentare aufnehmen . Ich weiß - das ist scheiße ... Nemoden vor 12 Jahren 0
Das ist gut. Ich bezweifle nur die Notwendigkeit, Informationen zu einer Commit-Nachricht hinzuzufügen, die bereits verfügbar ist. Meine Antwort wäre besser als Kommentar zu der Frage geeignet gewesen, weil sie nicht wirklich ein Versuch war, die gestellte Frage zu beantworten. mkomitee vor 12 Jahren 0
Yep :) Deswegen habe ich etwas hart reagiert. Es tut mir leid, wenn es sich so anhört (ich habe das jetzt gemerkt, nachdem ich jetzt meine Kommentare gelesen hatte). Ich weiß die Hilfe der Community wirklich zu schätzen. Nemoden vor 12 Jahren 0