권장 기능: Gblame
5299 단어 vim-fugitive
묘사
저는:Gblame
에 대한 생각이 있습니다. 이런 생각의 유용성은 의심할 여지가 있습니다. 그들은 서로 다른 방식으로 비슷한 데이터를 사용할 것입니다.cmdline의 커서 아래에 제출한 제출 메시지를 표시합니다
Survious와 함께 설치할 기본 작업 프로토타입이 있습니다.https://github.com/tommcdo/vim-fugitive-blame-ext
현재, 이것은
git show
새로운 제출 산열을 만날 때마다 제출 메시지를 찾고, 이를 Dict에 캐시합니다. 그러나 git log --oneline %
을 사용해서 포획하는 것을 고려하고 있습니다.문제는 제출이 파일 기록의 일부분이지만 파일에 나타나지 않는다면 필요한 것보다 더 많은 제출을 받을 수 있다는 것이다.메시지 제출을 언제 캡처하는지 헷갈린다. :Gblame
터치될 때마다 캡처하는 것은 대량의 업무 낭비를 초래할 수 있으며, 특히 여러 파일이 공통적으로 제출 책임을 져야 할 때이다.시간 순서대로 탐색 키 매핑 커밋
이렇게 하는 목적은 커서 아래의 제출을 시간 순서에 따라 다음/지난번에 제출한 출력의 첫 줄로 내비게이션할 수 있도록 하는 것이다.
나는
<C-n>
과<C-p>
로 이 일을 하게 하고 싶다.쓸모가 있는지 없는지 완전히 확인하지 못하기;나의 한 친구가 :Gblame
창에서 최근에 제출한 줄로 전환할 수 있는 방법이 있는지 물었다. 이것이 바로 내가 생각하는 더욱 통용되고 전면적인 기능이다.이것은 첫 번째 생각과 같은 데이터를 사용할 수 있지만, 메시지 제출을 값으로 하는 Dict가 아닌 다른 방식으로 데이터를 저장해야 한다.
또 다른 문제는 이 데이터를 어떻게 효과적으로 얻는가이다.
git log --oneline %
를 사용하는 것은 좋은 출발점이 될 것입니다. 그러나 책망에 존재하는 제출과 교차하거나 존재하지 않는 제출을 존재할 때까지 건너뛰는 방법을 알아야 합니다.둘 다 좀 불쾌한 것 같아.이 두 가지 데이터는 서로 연관된 것 같다.첫 번째 방법은 일반 사용자에게 분명히 더 유용하지만, 기본적으로 사용하면 너무 비싸게 사용할 수 있습니다.두 번째도 상당히 비싸서 그렇게 유용하지는 않겠지만 약간의 리키 수요를 충족시킬 수 있다.
무슨 생각 있어요?
토론 #1
첫 번째 생각은 커서가fugitive
버퍼에 있는 제출 해시에 있을 때마다 제출 메시지를 표시할 수 있도록 확장될 수 있습니다.이것은 매우 간단할 수 있지만, 어떤 경우에는 불필요하다.토론 #2
+1 일부 방법에서 버퍼의 한 줄의 제출 정보를 볼 수 있습니다.현재 줄의 매개 변수를 표시하기 위해 자동으로 실행되거나 단축키만 보일 수 있습니다.나는 어떤 방식으로 연표를 보는 것이 매우 유용하다고 생각하지만, 나는 당신이 언급한 단축키가 너무 유용한지 확실하지 않다. 특히 제출은 많은 비연속 블록을 인용할 수 있기 때문이다.나는 버퍼에 열을 추가하거나 기호를 사용하여 줄의 최근 정도에 따라 줄에 다른 색을 지정하면 얼마나 많은 제출이 발생했는지 더욱 효과적으로 나타낼 수 있다고 생각한다.
토론 #셋
K
에 수동 커밋이 표시됩니다.자동 방법에 대한 나의 걱정은 그것이 매우 느릴 수도 있지만, 나는 시도해 본 적이 없다는 것이다.이것
<C-P>
의 생각과 현재의 ~
/P
는 어떤 차이가 있습니까?토론 #4
나는 자동으로 메시지를 제출하는 것을 사용한 지 오래되었다(확장 플러그인으로 실현되었다).그것은 좀 둔하다.예를 들어,j
를 누른 채 있으면 다시 그려진 가공소재가 있을 수 있습니다.그 외에 나는 이것이 받아들일 수 있다고 생각한다.그것을 열거나 닫는 옵션은 더 까다로운 사람들을 위로할 수 있다.몰라
K
;그것은 아주 좋아서 대부분의 용례에 적합할 것이다.솔직히 말해서, 나는 제출 요약을 이렇게 빨리 볼 필요가 있는지 모르겠지만, 나는 그것이 통상적으로 매우 편리하다는 것을 발견했다.<C-P>
와 <C-N>
의 생각은 더 이상 비난할 생각이 없다.반대로 현재 버퍼에서 이전 줄이나 다음 시간 순서대로 제출한 첫 줄로만 이동합니다.당시에는 이것이 재미있는 생각인 것 같았지만, 지금은 전혀 쓸모가 없다고 생각한다.토론 #5
만약 그것이 당신에게 너무 느리다면 Windows에서 사용할 수 없을 수도 있습니다.당신이 성공적으로 외부에서 그것을 실현했으니, 나는 지금 계속 그것을 집적할 것이다.토론 #6
에 대해 더 많은 생각을 했습니다. 저는 상태행이:Gblame
버퍼에 아무런 가치가 없다는 것을 깨달았기 때문에 이것은 메시지를 제출하는 좋은 곳일 수 있습니다.나에게 있어서 이것은 CursorMoved
사건보다 훨씬 깨끗하고, 커서가 인도할 반대 창 (가설 'cursorbind'
에 있을 때 작용한다.나는 최초의 실현을
blame_message
지점으로 미루었다.다시 그리는 문제가 있기 때문에 합병하기 전에 제출을 미리 불러오는 방법이 필요합니다.토론 #7
방금 현지에서 한 번 회전을 했는데 효과가 아주 좋아요!역시 대사의 대열에 잘 녹아들었다.나는 개인적으로 다시 그리는 어떤 문제도 보지 못했다.하지만 나는 Neovim을 사용하기 때문에 아마도 이것은 그것과 관련이 있을 것이다.git-p를 사용하여 도자기 형식을 보여 줍니다. 이외에 메시지를 제출하는 요약도 제공합니다.이 도자기를 해석하기 위해 Vimscript를 작성해야 합니다.이런 형식은 포용성이 있고 해석 도구를 위해 설계되었기 때문에 버퍼에 정보를 표시하는 더 좋은 방법일 수 있다.불리한 점은 우리가 스스로 비난의 표식을 실시해야 할지도 모른다는 것이다.
토론 #8
현지에서 재판을 받는다.@SevereOverfl0w의 결과와 같습니다.맥에서 네오비엠과 호흡을 맞출 때 태만하지 않은 활약을 펼쳤다.
호스트와의 합병은 여전히 유효하며 충돌이 없습니다.
fugitiveblame
창에서 이동하고 돌아오면 상태 줄이 업데이트되지 않습니다.이 패치가 이 문제를 해결한 것 같다.diff --git a/plugin/fugitive.vim b/plugin/fugitive.vim
index 4d953cf..7e15e8d 100644
--- a/plugin/fugitive.vim
+++ b/plugin/fugitive.vim
@@ -1925,6 +1925,7 @@ augroup fugitive_blame
autocmd Syntax fugitiveblame call s:BlameSyntax()
autocmd User Fugitive if s:buffer().type('file', 'blob') | exe "command! -buffer -bar -bang -range=0 -nargs=* Gblame :execute s:Blame(<bang>0,<line1>,<line2>,<count>,[<f-args>])" | endif
autocmd ColorScheme,GUIEnter * call s:RehighlightBlame()
+ autocmd BufEnter *.fugitiveblame let &l:statusline = '%{fugitive#blame_statusline('.bufnr('').')}%<'
augroup END
function! s:linechars(pattern) abort
토론 #9
저는 방금 blame_message지점을 시험해 봤는데 잘 작동하고 있습니다.틀림없이 나의 분기보다 진보할 것이다.그것과'scrollbind'
의 상호작용 방식은 매우 좋다. 미소:이 지사를 합병하는 데 무슨 어려움이 있습니까?
토론 #10
앞에서 언급한 재그림 문제로 인해 통합을 진행하지 않았습니다. 불러오지 않은 제출 더미에서 너무 빨리 굴러가면 화면이 혼란스러워집니다.나는 다시는 이 점을 재현할 수 없을 것 같다.며칠 동안 시험해 보라고 하고 합병을 시도해 보겠습니다.토론 #11
@eyalfir 당신의 문제를 재현할 수 없습니다.다른 플러그인도 있을 것 같습니다.&l:statusline
@SevereOverfl0w 도자기 출력을 해석하는 것은 틀림없이 가능할 것입니다. 비록 느리게 될까 봐 걱정되지만.메시지를 제출하는 데 사용하는 것은 어렵지 않을 수도 있지만, 그것에 대한 완전한 재실현 :Gblame
은 내가 보기에 당신이 생각하는 것보다 훨씬 어려운 것 같습니다.마귀는 디테일에 있다.토론 #12
오늘 나는 새 기계에서 놀랍게도 소식을 제출하지 않은 것을 발견했다.이 지점은 @tpope를 합병할 준비가 되어 있습니까?너는 몇 가지 테스트를 언급했다.토론 #13
이 기능이 있기를 바랍니다. 때때로 메시지를 제출하는 것은 당신이 알아야 할 한 줄의 코드입니다.Reference
이 문제에 관하여(권장 기능: Gblame), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/tpope/vim-fugitive/issues/405텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)