Yo uso bash en mac y uno de los alias es así
alias gitlog='git --no-pager log -n 20 --pretty=format:%h%x09%an%x09%ad%x09%s --date=short --no-merges'
Sin embargo, cuando lo hago
:! gitlog
yo obtengo
/bin/bash: gitlog: command not found
Sé que puedo agregar alias como este en mi .gitconfig
[alias]
co = checkout
st = status
ci = commit
br = branch
df = diff
Sin embargo, no quiero agregar todos mis alias de bash a .gitconfig. Eso no es SECO.
¿Existe una solución mejor?
Respuestas:
Bash no carga su .bashrc a menos que sea interactivo. Utilizar
para hacer que el
:!
shell de Vim se comporte como su símbolo del sistema.fuente
suspended (tty output)
Cuándo lo usogit commit
~/.zshrc
para shells interactivos, pero se carga~/.zshenv
para todos los shells, así que moví mi configuración de alias allí y ahora funciona desde Vim. Consulteman zsh
(o las páginas de manual de su shell) para obtener más información.Sé que esta pregunta ya fue "respondida" anteriormente, pero tengo un problema con la respuesta. No es necesario configurar el shell para que sea interactivo en Vim. Consulte este hilo para obtener una respuesta alternativa sin tener que salir de un shell interactivo.
Esta solución fue sugerida por "Jakob". Vea el enlace a continuación para ver el original. ¡Probé esto en Mac OS X 10.9 y funcionó perfectamente!
vim: ¿no reconoce los alias cuando está en modo interactivo?
fuente
$BASH_ENV
var en mi.bashrc
(antes de cualquier verificación de modo interactivo personalizado), para poder usar todos mis alias en todas las aplicaciones.let $BASH_ENV="~/.vim/vim_bash"
esto se usaría para todas las:!
invocaciones dentro de Vim.Tenga en cuenta que, dependiendo de cómo estén configurados sus archivos de punto bash, es posible que desee utilizar la opción -l en lugar de -i. Esto lanzará el shell como shell de inicio de sesión.
fuente
Sé que puede ser una pregunta antigua, sin embargo, ninguna de las respuestas anteriores funcionó para mí como deseaba. Entonces, para los que vinieron aquí de buscar en Google y para (oh-my-) usuarios de zsh:
Mi solución a esto fue tan simple como copiar .zshrc a .zshenv, según http://zsh.sourceforge.net/Intro/intro_3.html :
Así
$ cp ~/.zshrc ~/.zshenv
hará la cosa.fuente
. $HOME/.aliases
No me siento muy cómodo con la configuración de la opción -i, ya que tiene bastante impacto y estoy usando el shell a menudo desde vim. Lo que haría en su lugar es algo como
:!bash -c ". ~/.alias; gitlog"
fuente