2010-02-09 12 views
2

Le titre dit vraiment tout. Il y a l'option -O pour l'ouverture des divisions verticalement, et -o pour l'horizontale, mais essayer de les mélanger ne semble pas fonctionner.Mixage des divisions verticales et horizontales dans vim, à partir de la ligne de commande

Mon but est d'utiliser g/vimdiff pour la fusion de fichiers à 3 voies dans mercurial d'une manière plus proche de kdiff3. Cette méthode aurait les 3 fichiers à fusionner en 3 onglets verticaux en haut (ma version locale, l'autre version du fichier que je fusionne avec, et la version de base entre les deux), tandis que la "sortie", ou les résultats de la fusion, est une grande étiquette horizontale tendue à travers le fond.

Répondre

2

Ceci est un peu kludgy, mais cela fonctionne:

vim -c "wincmd J" -O base diff1 diff2 

(C'est un mot pour mot contrôle-W il

Peut-être y a-t-il une méthode plus élégante, mais elle les charge tout simplement verticalement et déplace ensuite la première (active) vers le bas.

+0

La méthode "plus élégante" consisterait à utiliser 'wincmd J' à la place. – jamessan

+0

Eh bien, le vôtre est plus ce que je considérais comme élégant, bien que vous ayez raison à ce sujet. (Bien sûr, je ne suis pas sûr de la différence qu'il y a en interne entre 'wincmd {arg}' et 'normal^W {arg}') – Cascabel

+0

J'adore un bon kludge, et cela fait l'affaire. Spécifiquement ajouter un peu de ceci dans le fichier .hgrc: filemerge.args = -c "wincmd J" -g -d -O $ output $ local $ autre $ base – user17925

1

Bien que Vim vous permette de fournir plus de 2 fichiers à différencier, il ne fonctionne pas particulièrement bien pour faire plus d'un diff bidirectionnel. En tout cas, vous avez raison de dire que vous ne pouvez pas spécifier différentes façons de diviser en utilisant à la fois -O et -o. Le mieux que vous obtiendrez est soit l'approvisionnement d'un script pour exécuter (via -S 3way.vim) ou en utilisant --cmd arguments pour configurer les divisions et modifier les tampons qui sont affichés dans ces divisions.

Un 3way.vim potentiel, en supposant que vous invoquez vim comme vim -S 3way.vim localfile otherversion baseversion merged serait

botright vsplit +b2 " Opens a split and focuses otherversion 
botright vsplit +b3 " Opens a split and focuses baseversion 
botright split +b4 " Opens a split and focuses merged 
wincmd =    " Resize all windows so they share space equally