Existe-t-il un moyen de configurer MacVim pour ouvrir un nouveau fichier dans la fenêtre actuelle dans une instance MacVim en cours d'exécution? J'ai actuellement la préférence MacVim "Ouvrir de nouveaux fichiers dans un nouvel onglet dans la fenêtre courante", mais idéalement, j'aimerais simplement ouvrir de nouveaux fichiers de la façon dont ": e new_file" fonctionne, sans les onglets.
Ma principale motivation est que j'utilise actuellement NERDTree et Bufexplorer pour mon flux de travail et que je n'ai pas du tout besoin des onglets. J'utilise également PeepOpen, ce qui est génial sauf qu'il ouvre toujours les fichiers en fonction des préférences de MacVim, donc le mieux que je puisse faire est de le faire ouvrir dans la fenêtre MacVim actuelle avec un nouvel onglet.
Vous pouvez également ajouter:
alias mvim='open -a MacVim'
à ton .bash_profile
Cela me semble être la solution la plus simple.
Vous pouvez également envisager cette astuce pour éditer le script mvim principal.
Amélioration de mvim pour MacVim
Cette modification est un peu moins sévère et fonctionne également:
MacVim prend en charge les onglets, mais malheureusement, appeler `mvim plusieurs fois à partir de la ligne de commande entraîne l'ouverture de plusieurs fenêtres séparées, au lieu de plusieurs onglets dans une seule fenêtre. J'ai apporté les modifications suivantes au script mvim pour corriger cela.
Ajoutez la ligne suivante en haut du fichier, sous la section commentée:
tabs=true
Remplacez la structure if en bas du fichier par ce qui suit:
# Last step: fire up vim. if [ "$gui" ]; then if $tabs && [[ `$binary --serverlist` = "VIM" ]]; then exec "$binary" -g $opts --remote-tab-silent ${1:+"$@"} else exec "$binary" -g $opts ${1:+"$@"} fi else exec "$binary" $opts ${1:+"$@"} fi
(from Ouvrir les onglets MacVim à partir de la ligne de commande )
De toute évidence, ce sont tous les deux un peu sous-optimaux car vous devrez maintenir le hack lorsque vous effectuez une mise à jour MacVim. Mais ils m'ont beaucoup aidé à ouvrir plusieurs fichiers à partir du terminal dans les nouveaux onglets Mac Vim.
J'utilise personnellement une commande comme celle-ci, après avoir tout vu ici et avoir tenté d'expérimenter ce que
mvim --help
est arrivé.
Je l'ai trouvé
mvim --remote-tab-silent foo.txt
a travaillé pour moi, puis j'ai rapidement ajouté un alias à mon .profile
. Oui, il barfs si vous ne lui donnez pas un fichier après l'option, mais qui ouvre un fichier vierge sans nom de toute façon?
La réponse de @ Björn Winckler vous montre comment le faire pour les fichiers ouverts via Finder et d'autres mécanismes d'ouverture du système d'exploitation.
Si vous voulez que cela fonctionne avec la commande mvim, recherchez le fichier mvim
et changez les lignes en bas de
if [ "$gui" ]; then
# Note: this isn't perfect, because any error output goes to the
# terminal instead of the console log.
# But if you use open instead, you will need to fully qualify the
# path names for any filenames you specify, which is hard.
exec "$binary" -g $opts ${1:+"$@"}
else
exec "$binary" $opts ${1:+"$@"}
fi
à
if [ "$gui" ]; then
# Note: this isn't perfect, because any error output goes to the
# terminal instead of the console log.
# But if you use open instead, you will need to fully qualify the
# path names for any filenames you specify, which is hard.
#make macvim open stuff in the same window instead of new ones
if $tabs && [[ `$binary --serverlist` = "VIM" ]]; then
exec "$binary" -g $opts --remote ${1:+"$@"}
else
exec "$binary" -g $opts ${1:+"$@"}
fi
else
exec "$binary" $opts ${1:+"$@"}
fi
Cela ouvrira également tous les fichiers ouverts à partir de la ligne de commande dans la même fenêtre.
Aussi si vous souhaitez que le fichier ouvre le même tampon si ce fichier est déjà ouvert au lieu de le fractionner ou d'ajouter un nouvel onglet
au VimEnter,BufWinEnter * NERDTreeFind
à votre gvimrc (pour ne pas interférer avec votre vim habituel)
(cette dernière partie nécessite l'installation de NERDTree)
Voici comment j'ai accompli ceci:
Dans VIM, il y a une commande "tabo", qui fait de l'onglet actuel le seul onglet. J'ai ajouté ce qui suit à mon ~/.vimrc:
autocmd BufWinEnter,BufNewFile * silent tabo
Cela fait que chaque fois que je crée un nouveau tampon ou entre un nouveau tampon, l'onglet actuel devient automatiquement le seul onglet. Cette commande n'affecte pas mes tampons, donc l'effet est exactement ce que je veux: ouvrir un fichier dans l'instance actuelle de MacVim et n'ajouter aucun nouvel onglet.
J'ai trouvé la réponse d'Azriel excellente, mais cela ne fonctionne pas si le fichier n'existe pas. Cette petite fonction fait la même chose mais vous pouvez également créer de nouveaux fichiers.
mvim () { touch "$@" && open -a MacVim "$@"; }
Ajoutez-le simplement dans votre .bash_profile
. Vous pouvez ensuite modifier un nouveau fichier foo
comme
mvim foo
et il s'ouvrira dans un nouvel onglet.