:GB
:7,13GB
:,+5GB
:?foo?,$GB
:'<,'>GB
:%GB
:GB
:7,13GB
:,+5GB
:?foo?,$GB
:'<,'>GB
:%GB
| command! -range GB echo join(systemlist("git -C " . shellescape(expand('%:p:h')) . " blame -L <line1>,<line2> " . expand('%:t')), "\n") |
When using commands involving git I suggest to always use the -C <path> flag. Assuming I am in my home directory and I open ~/projects/<name>/some/path/to/file then this command will not work, because I'm running Vim outside of the Git repository.
I suggest to use this command:
command! -range GB echo join(systemlist("git -C " . shellescape(expand('%:p:h')) . " blame -L <line1>,<line2> " . expand('%')), "\n")@kkoomen, that's a nice improvement, thanks.
If -C " . shellescape(expand('%:p:h')) is used, then correspondingly also expand('%:t') instead of '%'.
@Konfect, fixed, thanks.
IDEA: make it possible to pass an optional argument:
:GB HEAD~6
This has been working well for me.
command! -nargs=? -range GB echo join(systemlist("git -C " . shellescape(expand('%:p:h')) . " blame -L <line1>,<line2> <args> -- " . expand('%:t')), "\n")
IDEA: make it possible to pass an optional argument: