Program Terminal Untuk Menghemat Keadaan VI

1

Selama beberapa tahun sekarang di tempat kerja saya telah menggunakan Terminal GNOME, dan menjadi sangat terbiasa dengan itu. Saya biasanya mengatur pekerjaan saya dengan mengkategorikan setiap tugas pada desktop virtualnya sendiri, kemudian di dalam setiap desktop virtual saya memiliki beberapa Terminal Gnome masing-masing dengan beberapa terminal tab, yang sebagian besar memiliki file yang terbuka untuk diedit.

Pengaturan ini benar-benar membuat saya sulit untuk reboot, dan ketika saya melakukannya, sungguh menyusahkan untuk menyimpan file apa yang telah saya buka dan di mana. Saya telah melihat lebih jauh ke Terminal GNOME, serta Konsole, tetapi sejauh yang saya tahu, tidak satu pun dari program terminal ini dapat melakukan apa yang saya inginkan. Saya ingin dapat menyimpan sesi di GNOME atau Konsole, tetapi ketika saya memuat kembali sesi itu, file yang sebelumnya dibuka di VI, akan dibuka di VI lagi. Yang tampaknya mereka lakukan sekarang, hanya memuat ulang direktori tempat saya berada, tetapi tidak membuka file dalam VI.

Apakah ada program yang mampu melakukan ini, atau mungkin pengaturan yang saya lewatkan di GNOME atau Konsole yang memungkinkan pembukaan kembali file secara otomatis yang telah saya buka di VI sebelum menutup sesi?

halexh
sumber
1
Ini mungkin di luar topik, tetapi sebagian besar waktu, pengaturan itu tidak diperlukan karena host linux sulit sekali membutuhkan reboot.
mveroone
@ Kwaio Saya kira lebih untuk skenario ketika mesin saya crash. Misalnya, pada hari Jumat, semua terminal saya baru saja memutuskan untuk mogok, namun program lain tetap terbuka dan tidak terpengaruh. Pertama kali saya mengalaminya dalam 3 tahun menggunakan mesin ini.
halexh
Anda dapat membuat direktori symlink ke file yang ingin Anda buka, dan membuat skrip pada startup yang membuka semuanya. hanya sebuah ide
mveroone

Jawaban:

0

Dengan Vim, Anda dapat menjalankan :mksessionuntuk menyimpan sesi Anda saat ini, yaitu, pemetaan, opsi, variabel, direktori saat ini, tab, jendela (dan tata letaknya), dll. Ini menyimpan semua informasi sesi ke dalam file di direktori saat ini yang disebut Session.vim(Anda) dapat memberikan nama file ke :mksessionperintah jika Anda ingin menyimpan sesi yang berbeda di file yang berbeda, misalnya, :mksession work-task.vim). Karena informasi disimpan dalam file, itu akan tetap ada setelah restart komputer.

Untuk mengembalikan sesi Anda saat berikutnya Anda memulai Vim, cukup jalankan, :source Session.vimatau:source work-task.vim

Lihat Vim help session-fileuntuk detail lengkap.

Anthony Geoghegan
sumber
0

Berikut ini di .vimrc Anda akan menyimpan sesi saat keluar dan mengembalikannya saat startup:

function! MakeSession()
  let b:sessiondir = $HOME . "/.vim/sessions" . getcwd()
  if (filewritable(b:sessiondir) != 2)
    exe 'silent !mkdir -p ' b:sessiondir
    redraw!
  endif
  let b:filename = b:sessiondir . '/session.vim'
  exe "mksession! " . b:filename
endfunction

function! LoadSession()
  let b:sessiondir = $HOME . "/.vim/sessions" . getcwd()
  let b:sessionfile = b:sessiondir . "/session.vim"
  if (filereadable(b:sessionfile))
    exe 'source ' b:sessionfile
  else
    echo "No session loaded."
  endif
endfunction

au VimEnter * nested :call LoadSession()
au VimLeave * :call MakeSession()

sumber

fakeleft
sumber