GNU/Linux >> Belajar Linux >  >> Linux

Simpan Status Sesi Vim Saat Ini Dan Pulihkan Nanti (mis. Buffer, Split, Dll)?

Sebagai pengguna VIM lama, tertarik pada VIM terutama karena substitusi regex langsungnya yang memungkinkan untuk bekerja sangat cepat, saya tidak benar-benar mengharapkan VIM memiliki fitur seperti itu. Tapi, apaan sih, mungkin saya mengabaikan sesuatu atau hal baru.

Apakah Anda tahu cara untuk vim , ketika membuka kembali daftar besar file (yaitu semua file sumber cpp/h dari suatu proyek) dalam mode n-column-split yang disesuaikan dengan ukuran layar (lihat perintah bash/alias di bawah), untuk memiliki buffer terbuka/terpilih/aktif sebelumnya kembali alih-alih mengatur ulang ke n file pertama di buffer yang terlihat? Sedikit seperti IDE akan melakukannya, dengan menyimpan status file terbuka.

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

Jawaban yang Diterima:

Anda dapat menggunakan sesi vim untuk itu. Jalankan saja:

:mksession mysession.vim

dan sebuah file akan dibuat di direktori saat ini (disebut 'mysession.vim'). Saat Anda membuka vim berikutnya, Anda dapat melakukan:

 :source mysession.vim

(atau apa pun yang Anda beri nama) dan Anda akan menemukan diri Anda kembali ke keadaan saat Anda membuat file sesi (semua pemisahan akan ada di sana, dll.).

Dari bantuan:

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. Cara Mengedit Banyak file dan Beralih di antara yang ada di VIM menggunakan Buffer

  2. Linux – Bagaimana Cara Menyimpan Sesi X — Archlinux+openbox?

  3. Simpan Dan Pulihkan Tab Terminal Anda?

  1. Cara Mencadangkan dan Memulihkan Basis Data di PostgreSQL

  2. perintah grpck – Hapus entri yang rusak atau duplikat di file /etc/group dan /etc/gshadow.

  3. Perbedaan antara /etc/crontab dan crontab -e

  1. Simpan dan pulihkan terminal saat reboot

  2. Linux ext4 mengembalikan hak akses file dan direktori setelah backup/restore yang buruk

  3. Apa hubungan antara direktori /etc/init.d dan /etc/rcX.d di Linux?