GNU/Linux >> Linux Esercitazione >  >> Linux

Salvare lo stato corrente della sessione Vim e ripristinarlo in un secondo momento (ad es. Buffer, divisioni ecc.)?

Come vecchio utente VIM, attratto da esso in primo luogo soprattutto per le sue semplici sostituzioni regex che consentono di lavorare molto velocemente, non mi aspetto davvero che VIM abbia una tale funzionalità. Ma che diavolo, forse ho trascurato qualcosa o qualche novità.

Per caso conosci un modo per vim , quando si riapre un enorme elenco di file (in particolare tutti i file di origine cpp/h di un progetto) in modalità n-column-split adattata alle dimensioni dello schermo (vedi comando bash/alias di seguito), per avere precedenti buffer aperti/selezionati/attivi tornare invece di ripristinare i primi n file attraverso i buffer visibili? Un po' come farebbe un IDE, salvando lo stato dei file aperti.

# 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 )) \{} \+'

Risposta accettata:

Puoi usare le sessioni vim per quello. Corri:

:mksession mysession.vim

e verrà creato un file nella directory corrente (chiamato "mysession.vim"). Alla prossima apertura di vim, puoi fare:

 :source mysession.vim

(o come l'hai chiamato) e ti ritroverai allo stato in cui eri quando hai creato il file di sessione (tutti gli split saranno lì ecc.).

Dall'aiuto:

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. Linux – Come salvare la sessione X — Archlinux+openbox?

  2. Come elencare i descrittori di file aperti (e i file a cui si riferiscono) nella sessione corrente di Bash?

  3. Come eseguire il backup e il ripristino del database in PostgreSQL

  4. Ottieni l'ora corrente in ore e minuti

  5. Differenza tra /etc/crontab e crontab -e

Come salvare un file in Vim/Vi e uscire dall'editor

Come annullare e ripetere in Vim/Vi

Il modo giusto per modificare i file /etc/passwd e /etc/group in Linux

Come salvare un file in Vi / Vim e uscire dall'editor

Vim vs Vi:somiglianze e differenze tra VIM e VI?

Differenza tra /etc/hosts e /etc/resolv.conf