.vimrc использует имя файла, который сейчас редактируется

686
Nemoden

У меня есть плагин, VIMкоторый в основном предоставляет интерфейс для моего SVN( vcscommand.vim ). И я сопоставил :VCSUpdateи :VCSCommitкоманды плагина vcscommand в моем .vimrc. Все идеально, кроме одного:

После звонка: VCSCommit вы обычно пишете комментарий так:

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

В системе развертывания нашей компании не указано, какой файл был зафиксирован, поэтому мы обычно пишем комментарии следующим образом:

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

В системе развертывания мы видим все эти коммиты, поэтому мы можем сказать, какой файл должен быть загружен на рабочий сервер после нажатия кнопки «Синхронизация».

Итак, мне интересно, как мне сопоставить: VCSCommit, чтобы добавить имя файла в качестве комментария. Мое отображение пока что:

map <C-q> :VCSCommit 

Таким образом, после нажатия Ctrl + Q, он отображается :VCSCommitв нижней строке, но я бы хотел видеть :VCSCOmmit my_file_name_that_i_m_editing_now.

Как я могу это сделать?

2

2 ответа на вопрос

2
garyjohn

Это должно сделать это.

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

Для получения дополнительной информации см.

:help c_CTRL-R 

РЕДАКТИРОВАТЬ

Чтобы вставить только имя файла, когда он %содержит путь, используйте это:

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

:pРасширяет имя файла предшествующую включать полный путь и :tпринимает хвост этого пути. Увидеть

:help expand() 
Помогает, но это немного не то, что я ожидал. Он вставляет соответствующий путь к файлу, который я редактирую из `pwd`, поэтому он вставляет` include / somefile.php`. Как мне получить просто `somefile.php`. Я прочитал справку и попробовал альтернативное имя файла (`#`) ... все еще не то, что я хочу :( Если нет способа вставить имя файла, я пойду с `% ` Nemoden 13 лет назад 0
@ Немоден: Нет проблем. Я обновил ответ. garyjohn 13 лет назад 0
Я бы никогда не понял это. Спасибо! Nemoden 13 лет назад 0
0
mkomitee

Так же, как к вашему сведению, svn log -vпокажет вам, какие файлы были изменены коммитом, поэтому добавление имени файла в сообщении коммита не должно быть действительно необходимым.

Сначала без -v:

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

Теперь та же ревизия с -v:

% svn log -vr2  ------------------------------------------------------------------------ r2 | mkomitee | 2011-05-27 08:56:02 -0400 (Fri, 27 May 2011) | 1 line Changed paths: M /baz  change ------------------------------------------------------------------------ %  
Речь идет не о `svn` (в котором я опытен и знаю, как составить список изменений, так что ваша` fyi` не продвигает мои знания), а о `vim` (в котором я не настолько опытен и нуждаюсь в помощи) , так что этот ответ не соответствует тому, что я прошу. @garyjohn уже дал достойный ответ. Я не хотел бы понизить хотя. Nemoden 13 лет назад 0
Наверное, это плохо, я не сказал, что в нашей системе развертывания мы не видим, какие файлы были изменены, но мы видим только комментарии к этим коммитам. Я, вероятно, внесу некоторые изменения в нашу систему в ближайшем будущем, например, всплывающие окна, отображающие всю информацию о конкретном коммите, но сейчас у меня нет достаточно времени для настройки внутреннего программного обеспечения ... поэтому нам все еще нужно включить filenate в комментарии , Я знаю - это отстой ... Nemoden 13 лет назад 0
Все в порядке. Я просто подвергаю сомнению необходимость добавления информации к сообщению коммита, которое уже доступно. Мой ответ был бы лучше подходить как комментарий к вопросу, потому что это не была попытка ответить на заданный вопрос. mkomitee 13 лет назад 0
Да :) Вот почему я ответил немного резко. Извините, если это звучало так (я понял это после перечитывания моих комментариев сейчас). Я действительно ценю помощь сообщества, хотя. Nemoden 13 лет назад 0