Konfigurasi Vim saya mencakup plugin yang mencoba menangani proyek saat ini, tag bangunan, dll . Ini cukup berguna untuk pemrograman harian saya di Vim, tetapi hanya mengganggu ketika saya menggunakan Vim untuk beberapa pengeditan cepat, seperti:
- sunting pesan git commit;
- edit perintah shell ketika saya mengetikkan Ctrl+xCtrl+ezsh atau bash;
- dll.
Saya juga tidak suka --noplugins
, karena saya masih ingin memanfaatkan beberapa plugin dalam mode edit cepat, seperti surround, gerakan mudah, dan banyak lainnya.
Jadi, saya ingin memiliki beberapa "mode cahaya" (atau "mode cepat"), di mana beberapa plugin akan dilewati, tetapi tidak semuanya.
Gagasan pertama saya adalah memiliki beberapa argumen baris perintah khusus, yang saya parsing dalam vimscript, tetapi googling cepat menunjukkan bahwa saat ini tidak mungkin dalam vimscript (sedih sekali, omong-omong).
Gagasan kedua saya adalah mengatur beberapa variabel lingkungan saat menjalankan vim, seperti ini:
$ VIM_LIGHT_MODE=1 vim
Ini bekerja di git:
$ git config --global core.editor 'VIM_LIGHT_MODE=1 vim'
Tetapi jika saya lakukan EDITOR='VIM_LIGHT_MODE=1 vim'
, dan ketik Ctrl+xCtrl+eshell, itu tidak berfungsi:
edit-command-line:13: command not found: VIM_LIGHT_MODE=1
Lalu saya mencoba ini:, EDITOR="bash -c 'VIM_LIGHT_MODE=1 vim'"
tetapi gagal juga:
vim': -c: line 1: syntax error: unexpected end of file
(Sejujurnya, yang ini terlihat sangat aneh, sepertinya saya salah paham bagaimana tepatnya $EDITOR
digunakan, dan saya akan senang jika seseorang menjelaskan apa yang terjadi di sini)
Semua eksperimen lain juga gagal.
Satu-satunya peretasan yang dapat saya pikirkan adalah mengatur beberapa servername
, seperti:
$ vim --servername VIM_LIGHTWEIGHT_MODE
Dan kemudian periksa v:servername
dalam vimscript, tapi ini adalah retasan total : ini bukan untuk servername.
Jadi adakah cara yang lebih bersih untuk mencapai apa yang saya inginkan?
sumber
env
:EDITOR='env VIM_LIGHT_MODE=1 vim'
.vim
sebagaivim -u .vimrc-light
.env
sama sekali, shell-fu saya masih terlalu lemah. Pertimbangkan untuk menuliskannya sebagai jawaban, sehingga saya dapat menerimanya.Jawaban:
Ada (setidaknya) dua kemungkinan:
gunakan
env
:gunakan
vim
dengan file inisialisasi lain, katakan.vimrc-light
:sumber
Meskipun jawaban yang diterima tentu lebih baik, saya ingin membahas
EDITOR="bash -c 'VIM_LIGHT_MODE=1 vim'"
. Masalahnya di sini adalah yangEDITOR
dipanggil dengan argumen, dan argumen yang diteruskan untukbash -c
tidak diteruskan secara otomatis kevim
. Anda perlu menggunakan"$@"
:Namun, argumen pertama setelah perintah masuk
bash -c
adalah$0
, yang bukan bagian dari$@
, jadi Anda perlu menggunakan argumen placeholder:Dengan jebakan-jebakan ini, itu bukan pilihan yang baik, tetapi tetap bisa diterapkan.
sumber
Sebenarnya ide pertama Anda mungkin, dengan cara yang elegan juga. Anda dapat membuat perintah yang ditentukan pengguna dan kemudian memanggil vim dengan
+
sintaks.Cukup tentukan perintah pengguna khusus dalam
.vimrc
file Anda seperti ini:Kemudian dari baris perintah Anda dapat memulai vim seperti:
Saya menggunakan ini dalam
.vimrc
catatan mudah saya , seperti:Ini memungkinkan untuk memanggilnya dengan ini
vim +Note
. Kemudian buat alias shell dirc
file shells Anda , untuk memungkinkan panggilan lebih mudah. Dalam.bashrc
file saya, saya alias perintah vim di atas seperti ini:Solusi sampel
Dalam kasus Anda, Anda dapat menulis sesuatu di sepanjang baris ini di
.vimrc
file Anda :Kemudian uji untuk mode cahaya namun Anda inginkan berdasarkan plugin atau kelompok plugin, dll ... menggunakan
if
pernyataan vim yang mirip dengan ini di.vimrc
file Anda :Hal-hal yang perlu diperhatikan
!
after vimcommand!
berarti bahwa ini akan menimpa perintah yang didefinisikan dengan nama yang sama. Ini lebih disukai.CustomUserCommandName
HARUS memiliki huruf pertama dikapitalisasig:
Anda dengan Anda dapat menggunakans:
atau ruang lingkup apa pun yang sesuai dengan kebutuhan Anda.sumber