지금은 도망자를 사용하여 거의 모든 자식을 관리하고 있지만 사용 가능한 분기를 빠르게 시각화하고 전환하는 좋은 워크 플로우를 찾을 수 없습니다.
내가 할 수 :Git checkout <branch-name>
있는 문제는 파일 이름과 분기를 모두 자동 완성하고 분기 목록을 선호한다는 것입니다.
지금은 도망자를 사용하여 거의 모든 자식을 관리하고 있지만 사용 가능한 분기를 빠르게 시각화하고 전환하는 좋은 워크 플로우를 찾을 수 없습니다.
내가 할 수 :Git checkout <branch-name>
있는 문제는 파일 이름과 분기를 모두 자동 완성하고 분기 목록을 선호한다는 것입니다.
답변:
여기에 답을 완성하는 방법은 다음과 같습니다.
일반 모드 에서 CTRL- Z를 누르면 쉘로 돌아가서 Vim을 일시 중단합니다. 유형을 실행 한 후 명령이 일시 중단 된 Vim으로 돌아가서 Vim을 새로 고칩니다.git checkout [branchname]
fg
일부 gvim 구현은 :shell
바보 터미널을 사용하여 Vim 내부의 쉘을 여는 지원을 제공합니다. 그러나 다음과 같이 입력하는 것이 더 쉬울 수 있습니다.
:!git checkout [branchname]
새 쉘 프롬프트를 열지 않고도 명령이 실행됩니다. 이 옵션은 터미널 Vim에서도 사용할 수 있습니다.
vim-fugitive 는 Vim에서 Git을 사용할 수있는 플러그인입니다. 명령은 다음과 같습니다.
:Git checkout [branchname]
vim-merginal 은 vim-fugitive 를 사용 하고 사용자 친화적 인 인터페이스를 제공하는 플러그인입니다 .
:Merginal
.cc
해당 지점을 확인하려면 입력 하십시오.vim-merginal
내가 찾던 것입니다.
ctrl-z
파일을 자동으로로드하기 때문에 좋아 합니다. 동료들은 명령 줄과 vim을위한 tmux 창을 원하지만 vim으로 돌아 왔을 때 체크 아웃 또는 병합을 수행 할 때는 열려있는 각 파일로 이동해야합니다 :e!
. ( :bufdo e
) 기억해야 할 고통입니다. 대신은을 쉽게 ctrl-z
다음 때 fg
Vim은 수행을 발생 :e
자동 마술.
:checktime
열려있는 모든 버퍼를 다시로드하는 것이 편리합니다.
사용 VIM-merginal 플러그인 ( 도망자 확장). 다음을위한 대화식 TUI를 제공합니다.
당신은 당신의 터미널을 포용해야합니다. 을 사용하면 CTRL-ZVim (또는 현재 실행중인 프로세스)을 배경으로하고 원하는 명령을 실행 fg
하여 프로세스를 다시 포 그라운드로 가져올 수 있습니다.
<CTRL-Z>
git checkout <tab>
fg
:shell
당신이 좋아하는 다른 터미널 에뮬레이터로 이동하거나 Alt
!git checkout [branchname]
도망자 Git checkout <branch>
는 분기 이름을 자동 완성하지 못하는 단점이 있습니다. fzf.vim을 사용 하여이 명령을 만들었습니다.
function! s:changebranch(branch)
execute 'Git checkout' . a:branch
call feedkeys("i")
endfunction
command! -bang Gbranch call fzf#run({
\ 'source': 'git branch -a --no-color | grep -v "^\* " ',
\ 'sink': function('s:changebranch')
\ })
유용하다고 생각 하시길 바랍니다
@ kubek2k가 제공하는 답변은 매우 놀랍습니다. 그 솔루션은 내가 상상할 수있는 적은 코드 줄로 상상하고 구현할 수있는 것보다 낫습니다. 'fzf'의 강력한 개인화 사용을 이해하는 데 도움이되는 문을 열었습니다.
추가로 제공하기 위해 약간 수정했습니다.
다음은 약간의 수정입니다.
function! s:gitCheckoutRef(ref)
execute('Git checkout ' . a:ref)
" call feedkeys("i")
endfunction
function! s:gitListRefs()
let l:refs = execute("Git for-each-ref --format='\\%(refname:short)'")
return split(l:refs,'\r\n*')[1:] "jump past the first line which is the git command
endfunction
command! -bang Gbranch call fzf#run({ 'source': s:gitListRefs(), 'sink': function('s:gitCheckoutRef'), 'dir':expand('%:p:h') })
fugitive
아닙니다fugative
. OP가 이미 사용하고 있습니다.