GNU/Linux >> Tutoriels Linux >  >> Linux

Enregistrer l'état actuel de la session Vim et le restaurer ultérieurement (par exemple, tampons, fractionnements, etc.) ?

En tant qu'ancien utilisateur de VIM, attiré par lui en premier lieu, notamment en raison de ses substitutions simples de regex qui permettent de travailler très rapidement, je ne m'attends pas vraiment à ce que VIM ait une telle fonctionnalité. Mais bon sang, j'ai peut-être oublié quelque chose ou une nouveauté.

Connaîtriez-vous un moyen pour vim , lors de la réouverture d'une énorme liste de fichiers (tous les fichiers sources cpp/h d'un projet notamment) en mode n-column-split adapté à la taille de l'écran (voir commande/alias bash ci-dessous), pour avoir les précédents tampons ouverts/sélectionnés/actifs revenir au lieu de réinitialiser les n premiers fichiers dans les tampons visibles ? Un peu comme le ferait un IDE, en sauvegardant l'état des fichiers ouverts.

# check the window size after each command and, if necessary,                   
# update the values of LINES and COLUMNS.                                       
shopt -s checkwinsize                                                           
alias vimcpp='find . \( -name '\''*.cpp'\'' -o -name '\''*.cc'\'' -o -name '\''*.cxx'\'' -o -name '\''*.c'\'' -o -name '\''*.hpp'\'' -o -name '\''*.hh'\'' -o -name '\''*.hxx'\'' -o -name '\''*.h'\'' \) -exec vim -O$(( ( ( $COLUMNS - 1 ) / 80 > 0 ) ? ( ( $COLUMNS - 1 ) / 80 ) : 1 )) \{} \+'

Réponse acceptée :

Vous pouvez utiliser des sessions vim pour cela. Exécutez simplement :

:mksession mysession.vim

et un fichier sera créé dans le répertoire courant (appelé ‘mysession.vim’). La prochaine fois que vous ouvrirez vim, vous pourrez faire :

 :source mysession.vim

(ou peu importe comment vous l'avez nommé) et vous vous retrouverez dans l'état où vous étiez lorsque vous avez créé le fichier de session (toutes les divisions seront là, etc.).

Depuis l'aide :

This is introduced in sections 21.4 and 21.5 of the user manual.

:mks[ession][!] [file]  Write a Vim script that restores the current editing
            session.
            When [!] is included an existing file is overwritten.
            When [file] is omitted "Session.vim" is used.


The resulting file, when executed with a ":source" command:

1. Restores global mappings and options, if 'sessionoptions' contains
   "options".  Script-local mappings will not be written.
2. Restores global variables that start with an uppercase letter and contain
   at least one lowercase letter, if 'sessionoptions' contains "globals".
3. Closes all windows in the current tab page, except the current one; closes
   all tab pages except the current one (this results in currently loaded
   buffers to be unloaded, some may become hidden if 'hidden' is set or
   otherwise specified); wipes out the current buffer, if it is empty
   and unnamed.
4. Restores the current directory if 'sessionoptions' contains "curdir", or
   sets the current directory to where the Session file is if 'sessionoptions'
   contains "sesdir".
5. Restores GUI Vim window position, if 'sessionoptions' contains "winpos".
6. Restores screen size, if 'sessionoptions' contains "resize".
7. Reloads the buffer list, with the last cursor positions.  If
   'sessionoptions' contains "buffers" then all buffers are restored,
   including hidden and unloaded buffers.  Otherwise only buffers in windows
   are restored.
8. Restores all windows with the same layout.  If 'sessionoptions' contains
   "help", help windows are restored.  If 'sessionoptions' contains "blank",
   windows editing a buffer without a name will be restored.
   If 'sessionoptions' contains "winsize" and no (help/blank) windows were
   left out, the window sizes are restored (relative to the screen size).
   Otherwise, the windows are just given sensible sizes.
9. Restores the Views for all the windows, as with |:mkview|.  But
   'sessionoptions' is used instead of 'viewoptions'.
10. If a file exists with the same name as the Session file, but ending in
   "x.vim" (for eXtra), executes that as well.  You can use *x.vim files to
   specify additional settings and actions associated with a given Session,
   such as creating menu items in the GUI version.

Linux
  1. Comment répertorier les descripteurs de fichiers ouverts (et les fichiers auxquels ils se réfèrent) dans la session Bash en cours ?

  2. Enregistrer et restaurer vos onglets de terminal ?

  3. Comment sauvegarder et restaurer une base de données dans PostgreSQL

  4. Commande grpck – Supprimez les entrées corrompues ou en double dans les fichiers /etc/group et /etc/gshadow.

  5. Enregistrer et restaurer le terminal au redémarrage

Comment enregistrer un fichier dans Vim / Vi et quitter l'éditeur

Comment annuler et rétablir dans Vim / Vi

La bonne façon de modifier les fichiers /etc/passwd et /etc/group sous Linux

Comment enregistrer un fichier dans Vi / Vim et quitter l'éditeur

Linux – Comment enregistrer une session X — Archlinux+openbox ?

Vim vs Vi - Similitudes et différences entre VIM et VI ?