Fichier ouvert MacVim dans une fenêtre existante

Est-il possible de configurer MacVim pour ouvrir un nouveau fichier dans la fenêtre en cours 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 en cours” mais, idéalement, je voudrais juste ouvrir de nouveaux fichiers de la même manière que “: e new_file”, sans les tabs.

Ma principale motivation est que j’utilise actuellement NERDTree et Bufexplorer pour mon stream de travail et que je n’ai pas besoin des tabs. J’utilise aussi 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 les ouvrir dans la fenêtre MacVim actuelle avec un nouvel onglet.

  1. Mise à jour de MacVim 7.3
  2. Aller dans les préférences générales
  3. Sous “Ouvrir les fichiers des applications:” choisissez “dans la fenêtre actuelle”
  4. Dans le menu déroulant sous cette option, sélectionnez “et définissez l’argliste”

Vous pouvez également append:

alias mvim='open -a MacVim'

à votre .bash_profile

Cela me semble la solution la plus simple.

Personnellement, j’utilise une commande comme celle-ci, après avoir tout vu ici et avoir expérimenté avec

 mvim --help 

retourné.

Je l’ai trouvé

 mvim --remote-tab-silent foo.txt 

a travaillé pour moi et puis j’ai rapidement ajouté un alias à mon .profile . Oui, si vous ne lui fournissez pas un fichier après l’option, mais qui ouvre un fichier vierge sans nom?

Vous pourriez également considérer cette astuce sur l’édition du script mvim principal.

Améliorer mvim pour MacVim

Cette modification est un peu moins sévère et fonctionne également:

MacVim prend en charge les tabs, mais malheureusement, appeler `mvim plusieurs fois depuis la ligne de commande entraîne l’ouverture de plusieurs fenêtres distinctes, au lieu de plusieurs tabs 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 la suivante:

 # 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 

(à partir des tabs Open MacVim de la ligne de commande )

Évidemment, ces deux éléments sont un peu n / b / c, vous devrez maintenir le hack lorsque vous effectuez une mise à jour MacVim. Mais ils m’ont aidé à ouvrir plusieurs fichiers du terminal dans les nouveaux tabs Mac Vim.

La réponse de @ Björn Winckler vous montre comment procéder pour les fichiers ouverts via le Finder et d’autres mécanismes d’ouverture de système d’exploitation.

Si vous voulez qu’il fonctionne avec la commande mvim, recherchez le fichier mvim et mvim 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 tous les fichiers 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 fractionner ou d’append un nouvel onglet

au VimEnter,BufWinEnter * NERDTreeFind à votre gvimrc (pour ne pas interférer avec votre vim normal)

(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 en sorte que chaque fois que je crée un nouveau tampon ou entrez 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 ne pas append de nouveaux tabs.

J’ai trouvé la réponse d’Azriel géniale 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 alors éditer un nouveau fichier foo tant que

 mvim foo 

et il s’ouvrira dans un nouvel onglet.