권장 기능: 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

이 기능이 있기를 바랍니다. 때때로 메시지를 제출하는 것은 당신이 알아야 할 한 줄의 코드입니다.

좋은 웹페이지 즐겨찾기