Apakah mungkin untuk membuat dan menggunakan menu dalam vim (berbasis terminal)?

18

Saya menyiapkan kotak Linux tervirtualisasi (sebagai server pengembangan lokal) untuk pengembang di sebuah perusahaan yang terutama berbasis Windows, dan beberapa pengembang membuat celah negatif tentang vim (antara lain). (Sepertinya mereka mewakili Linux / Unix dalam beberapa cara, dan membuktikan bahwa lingkungan itu sangat sulit untuk digunakan.) Saya ingat ketika saya pertama kali dipaksa untuk menggunakan vim, (sysadmin menolak untuk menginstal emacs!) Dan awal yang sulit kurva belajar, jadi saya agak simpatik. Terjadi pada saya bahwa, daripada memperkenalkan mereka ke nano(yang mereka mungkin tidak akan pernah bisa melewati) mungkin dapat mengatur menu seperti nano di vim untuk membuat transisi lebih mudah. (Saya telah menemukan file .vimrc yang sangat ramah bagi pemula untuk diberikan kepada mereka, tetapi tidak memiliki apa pun seperti menu bergaya nano.)

Satu-satunya masalah adalah satu-satunya hal yang saya dapat menemukan bahwa klaim itu mungkin untuk men-setup menu di vim (bukan gvim) tidak berfungsi, dan upaya saya untuk memperbaiki masalah baru saja meninggalkan saya dengan masalah lain untuk dipecahkan. Sebelum saya membuang banyak waktu, saya ingin tahu apakah itu memang mungkin, karena tampaknya hanya ada sedikit informasi tentang cara melakukannya.

iconoclast
sumber
3
Sekarang ini di Vim bantuan: :h console-menus.
Alexey
@ Alexey: terima kasih! itu sangat membantu untuk mengetahui ... jika saya gulir ke bawah ke bagian "5.2 Membuat Menu Baru" yang sepertinya akan melakukan apa yang saya inginkan.
iconoclast

Jawaban:

18

Ya itu mungkin. Anda dapat memuat menu.vim(definisi menu gvim default), atau Anda bisa mulai dari awal dan membuat sendiri, lalu mengaksesnya :emenu. Ini tidak memberi Anda menu yang selalu terlihat seperti nano; itu memberi Anda kemampuan untuk menavigasi menu menggunakan penyelesaian tab baris perintah.

Jika pengguna tidak memiliki vimrc, Anda ingin memulai dengan menonaktifkan vi kompatibilitas:

:set nocompatible

Memungkinkan penyelesaian baris perintah cerdas pada <Tab>(mengaktifkan daftar semua pilihan yang mungkin, dan menavigasi hasil dengan <Up>, <Down>, <Left>, <Right>, dan <Enter>):

:set wildmenu

Buat siklus penekanan berulang kali di antara semua pilihan yang cocok:

:set wildmode=full

Muat menu default (ini akan terjadi secara otomatis di gvim, tetapi tidak di terminal vim):

:source $VIMRUNTIME/menu.vim

Setelah keempat perintah itu, Anda bisa memicu penyelesaian menu secara manual dengan memohon penyelesaian tab pada :emenuperintah, dengan melakukan:emenu<space><tab>

Anda dapat menavigasi hasil menggunakan tombol tab dan tombol panah, dan tombol enter (keduanya memperluas submenu dan memilih item). Anda kemudian dapat membuatnya lebih mudah dengan melangkah lebih jauh, dan mengikat pemetaan untuk memunculkan menu tanpa harus mengetik :emenusetiap waktu:

Buat Ctrl-Z dalam tindakan pemetaan seperti menekan secara <Tab>interaktif pada baris perintah:

:set wildcharm=<C-Z>

Dan buat ikatan yang secara otomatis meminta :emenupenyelesaian untuk Anda:

:map <F4> :emenu <C-Z>
godlygeek
sumber
2
Cemerlang! Biarkan saya tahu bagaimana saya bisa membelikanmu bir!
iconoclast
2

Saya sendiri mengalami masalah karena saya tidak dapat mengingat semua perintah dan kombinasi tombol untuk plugin yang saya gunakan. Selain itu, saya ingin memiliki cara sederhana untuk menjalankan perintah dengan cepat tanpa harus menetapkan pemetaan kunci baru atau menciptakan perintah untuk mengaksesnya.

Vim-Venu

Saya telah menulis sebuah plugin menu vim kecil yang memungkinkan Anda untuk menentukan menu untuk setiap jenis file yang mungkin Anda edit dengan vim. Dengan cara ini, Anda dapat menentukan opsi menu 'Kompilasi' untuk tipe file yang berbeda dan memulai instruksi yang benar untuk mengkompilasi kode tergantung pada file apa yang Anda edit (.py, .c, .c ++, ...). Atau buat submenu untuk perintah plugin 'Tabel' dalam file penurunan harga.

Lihat di sini: https://github.com/Timoses/vim-venu

Sebagai catatan: Saya pikir semua orang harus memilih editor teks favorit mereka sendiri. Vim memang memiliki sedikit penghalang (yang patut dipelajari!). Jika seseorang tidak mau belajar, maka vim tidak akan banyak berguna bagi orang itu.

Otti
sumber