Forum Linux.général [Editeur / gVim] Problème concernant la restauration de la session précédente

Posté par  .
Étiquettes : aucune
0
14
mai
2009
Bonjour, en gros je voudrais que gvim réagisse un peu comme Notepad++ sous Windows ou comme d'autres éditeurs, c'est à dire qu'il garde la session en mémoire et que lorsque j'ouvre un nouveau fichier, qu'il m'affiche la session précédente ainsi que le nouveau fichier dans le buffer/onglet/fenêtre actif.

J'ai trouvé un script qui correspond en partie, sur ce site [http://vim.wikia.com/wiki/Working_with_multiple_sessions], que j'ai adapté pour Windows (car j'utilise actuellement gvim sous Win XP) pour qu'il m'ouvre automatiquement la dernière session (sans afficher de message).

==> Mais j'ai encore un problème. J'aimerais que lorsque je lui spécifie un argument, par exemple lorsque j'exécute 'gvim.exe NOM_DU_FICHIER', il faudrait qu'il m'affiche automatiquement le fichier NOM_DU_FICHIER dans le buffer actif ou éventuellement dans un onglet (ce que j'arrive à faire avec ':buffer 1' d'après ce que j'ai vu, mais je voudrais que ce soit automatique au lancement de gvim).

Voici le script que j'utilise actuellement sous Win XP (g:PathToSessions a été modifié) :


au VimLeave * call VimLeave()
au VimEnter * call VimEnter()

let g:PathToSessions = $HOME . "\\vimfiles\\sessions\\"
let g:FichierSession = "DerniereSession.vim"

function! VimEnter()
" gvim started with no files
if has("browse") == 1
let g:SessionFileName = g:PathToSessions . g:FichierSession
if g:SessionFileName != ""
exe "source " . g:SessionFileName
endif
else
" For non-gui vim
exe "source " . g:PathToSessions . g:FichierSession
endif
endfunction

function! VimLeave()
exe "mksession! " . g:PathToSessions . g:FichierSession
if exists("g:SessionFileName") == 1
if g:SessionFileName != ""
exe "mksession! " . g:SessionFileName
endif
endif
endfunction

" A command for setting the session name
com -nargs=1 SetSession :let g:SessionFileName = g:PathToSessions . . ".vim"
" .. and a command to unset it
com -nargs=0 UnsetSession :let g:SessionFileName = ""
  • # Presque solutionné

    Posté par  . Évalué à 1.

    Je pense avoir trouvé quelque chose qui pourrait me convenir :
    version Linux : http://vim.wikia.com/wiki/Launch_files_in_new_tabs_under_Uni(...)
    version Windows : http://vim.wikia.com/wiki/VimTip1440

    J'ai rajouté une entrée dans le registre pour ouvrir les nouveaux fichiers avec : ...gvim.exe" --remote-tab-silent "%1".

    C'est pas mal mais par contre des fois il m'affiche ce genre de message au démarrage de gvim :

    "\Documents and Settings\XXX\vimfiles\sessions\DerniereSession.vim" [R0] 321L, 8501C
    Appuyez sur ENTREE ou tapez une commande pour continuer


    Si ça peut être utile, à la ligne 321 dans DerniereSession.vim (fichier où est stocké la session) j'ai :
    "silent! normal! zE"


    Et si je fais ENTREE j'ai :

    "Erreur détectée en traitant C:\Documents and Settings\XXX\vimfiles\sessions\DerniereSession.vim :
    ligne 85 :
    E163: Il n'y a qu'un seul fichier à éditer
    Appuyez sur ENTREE... blabla...


    A la ligne 85 j'ai :
    args \Documents\ and\ Settings\XXX\vimfiles\sessions\DerniereSession.vim


    Je vais chercher mais je ne comprends qu'à moitié les messages d'erreurs, je ne vois pas trop où est le problème...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.