De temps en temps, je fais une erreur sur la ligne de commande et j'utilise vim dans un sous-shell.
Bien sûr, cela verrouille cette fenêtre de terminal et génère un tas d'erreurs, l'erreur principale étant
Vim: Warning: Output not to a terminal
Existe-t-il un moyen pour moi de configurer vim afin qu'il s'éteigne automatiquement lorsque cela se produit et ne bloque pas mon terminal?
Je sais que je pourrais probablement comprendre l'ID de processus de cette instance de vim et le tuer, mais j'aimerais une meilleure solution si possible, car j'ai tendance à exécuter beaucoup d'instances de vim différentes dans différents volets/fenêtres tmux. Merci!
Vous pouvez l'empêcher de démarrer en premier lieu assez facilement. Pensez à mettre la définition de fonction suivante dans votre .bashrc
:
vim() {
[ -t 1 ] || { echo "Not starting vim without stdout to TTY!" >&2; return 1; }
command vim "$@"
}
La fonction intégrée command
empêche la récurrence, en s'assurant qu'elle appelle une commande externe (plutôt que d'appeler simplement la fonction à nouveau).
De même, vous pouvez créer un script $HOME/bin/vim
:
#!/bin/sh
if [ -t 1 ]; then
exec /usr/bin/vim "$@"
else
echo "Not starting vim without stdout to TTY!" >&2
exit 1
fi
... mettre $HOME/bin
en premier dans votre PATH
, et laissez ce shim faire le travail sans compter sur une fonction Shell.
Pas au courant d'une option de configuration qui fait cela, mais lorsque cela se produit si vous tapez :q<Enter>
, il quittera vim.
De plus, alors que Ctrl-C ne fonctionnera pas, Ctrl-Z mettra vim en arrière-plan et vous pourrez ensuite le tuer avec kill %1
.
Ou le raccourci vimZQ
Majuscules. Vous pouvez l'utiliser en mode normal :-)