Cara mempertahankan tata letak `gnu screen` setelah restart

13

Saya menggunakan screensplit 3 dengan vim di sebelah kiri, dan dua layar lainnya terbagi horizontal di sebelah kanan. Saya tahu bahwa saat melepaskan dari layar, saya dapat menyimpan tata letaknya :layout save my_layout_name.

Saya sudah ada layout autosave ondi .screenrcfile saya , tetapi itu tidak membantu masalah saya.

Bagaimana saya bisa mempertahankan tata letak layar antara sesi terminal yang berbeda, dan setelah pc restart? Atau mungkin sebagai solusi, apakah ada cara untuk menjalankan layar (parameter) yang membaginya, mengatur bash di setiap jendela dan menyimpan tata letak?

Randunel
sumber

Jawaban:

13

Tata letak default untuk layar baru

Kelola wilayah Anda, lalu jalankan kode di dalam layar :

  • Untuk menyimpan tata letak Anda saat ini ke file .screen_layout:

    rm -f $ HOME / .screen_layout
    layar -X layout dump .screen_layout
    
  • Untuk membuatnya memuat secara otomatis dengan penghematan tata letak:

    sumber gema .screen_layout >> $ HOME / .screenrc
    tata letak gema simpan def >> $ HOME / .screenrc
    

Bagaimana itu bekerja

  1. Anda mengetik screen.
  2. Layar berbunyi $HOME/.screenrc:
  3. source .screen_layout- baca dan jalankan perintah dari $HOME/.screen_layout
    Daerah yang sekarang dibuat.
  4. layout save def- Simpan wilayah saat ini sebagai tata letak untuk menjaga ketika Anda melepaskan.

layout dump .screen_layout

  • Dump ( tambahkan ) tata letak saat ini ke file dalam $HOMEdirektori

screen -X command

  • Jalankan commanddi sesi layar saat ini (jika dijalankan di dalam).
    Mirip dengan ctrlaitu: command

Anda mungkin juga

  • Nonaktifkan pemberitahuan hak cipta saat startup:

    echo startup_message off >> $ HOME / .screenrc
  • Tingkatkan buffer gulir (def. 100)

    echo defscrollback 1000 >> $ HOME / .screenrc
  • Tulis sendiri .screen_layout(50% / 50% vertikal, dengan 2 cangkang):

    split -v
    layar -t s1
    
    fokus
    layar -t s2
    
    fokus
    
befzz
sumber
Anda benar. Metode ini tetap tata letak layar dengan membuang perintah ke file, lalu ulangi .screenrc. The .screen_layoutfile dapat diedit dengan semua perintah yang akan dijalankan setiap kali screendijalankan, termasuk layout save defaultpada akhirnya. Saya menyarankan pembaca lain untuk menambahkan screensetelah focusdalam .screen_layoutfile untuk menjalankan bash.
Randandel
7

Ctrl- akemudian :kemudian layout save default layar Asalkan adalah versi yang lebih baru (dengan fitur tata letak) Good luck.

UPDATE: Ini adalah file .screenrc yang akan membuat perubahan permanen , bersama dengan menambahkan fitur-fitur bagus lainnya.

Mir Dunaev
sumber
tahu mengapa layout autosave ondi dalam .screenrctidak berfungsi? Itu akan lebih baik bagi saya.
spinlock
Anda benar, itu tidak berhasil. Tapi saya sudah menguji .screenrc dari sini: gist.github.com/joaopizani/2718397 dan itu BEKERJA.
Mir Dunaev
2

" layout autosave on " hanya berfungsi untuk tata letak yang diberi nama secara eksplisit di .screenrc.

Yaitu, jika Anda menetapkan beberapa tata letak sebagai ABC, beralih ke dalamnya dalam sesi Layar dan terlepas, tata letak terakhir ini akan dipulihkan setelah sesi dilanjutkan.

Jika Anda tidak menentukan tata letak apa pun di file konfigurasi, Anda harus menjalankan perintah internal " layout save your_layout_name " sebelum melepaskan.

Ini adalah .screenrc dengan tata letak yang telah ditentukan untuk dipilih:

 0 — one (the only region)
 1 — two-v (the screen is splitted vertically into two regions, default layout)
 2 — two-h (the screen is splitted horizontally into two regions)
 3 — three (three regions — two in the upper part of the screen and one underneath)
 4 — four (four regions)

Tata letak yang telah ditentukan

Setelah dipilih dari dalam Layar, tata letak ini dipertahankan setelah dilepas hingga melanjutkan sesi berikutnya (karena perintah "tata letak otomatis aktifkan").

Jika Anda telah membangun tata letak Anda sendiri, itu harus disimpan dengan perintah " layout dump filename ". Kemudian Anda dapat menggunakan kode dari file "nama file" untuk menambahkan tata letak Anda di bagian #layouts dari .screenrc ini untuk dipilih.

Secara default " two-v " layout dimuat dengan satu-satunya jendela dengan bash.

Oleg Bolden
sumber
Ini bagus, meskipun saya merindukan cara beralih dari satu tata letak ke tata letak lainnya, kemudian melihat komentar bahwa pengikatan kunci telah dihapus. Just fyi - keybinding ini berfungsi untuk saya (Ubuntu 16.04) untuk mengganti layout: bind ' ' layout next # <- actually means Ctrl-a + Space
Bachi
0

Menurut sumber ini tidak mungkin karena cara screenkerjanya. Namun, ada retasan yang disediakan di sana. Pada dasarnya bermuara pada layar bersarang di dalam layar lain, yang mungkin tidak nyaman. (Jawaban ditemukan di sini )

Jika Anda menggunakan layar untuk pemisahan terminal pada mesin lokal Anda (yang saya simpulkan dari pc restart yang disebutkan), Anda mungkin ingin memeriksa terminal emulator yang disebut terminator. Ini mendukung pemisahan terminal horisontal dan vertikal (bersarang juga) dan Anda dapat menyimpan tata letak favorit Anda untuk digunakan lebih lanjut. Lalu Anda cukup menjalankan terminator dengan opsi yang sesuai: terminator -l <name of saved layout>.

Erathiel
sumber
Saya tahu ada layar di dalam layar lain, tetapi semua layar dihentikan saat restart. Layar di dalam layar diselesaikan ketika layoutditambahkan, jadi jawaban Anda adalah selain pertanyaan dan sudah usang. Saya menghargai terminatorsaran itu.
Randandel