Cara menjalankan perintah pada vim startup

11

Saya baru saja menginstal plugin untuk python yang menampilkan metode tree. Jadi saya ingin membuka pohon saat startup, jadi tidak perlu menekan tombol setiap kali saya membuka beberapa .pyfile. Tapi, saya ingin perintah ini hanya dijalankan untuk .pyfile. Beginilah tampilan vimrc saya:

nmap <F8> :TagbarToggle<CR>

Apakah ada cara untuk menjalankan perintah ini saat startup hanya untuk .pyfile?

St.Antario
sumber
Howdy St. Antario. Anda mungkin ingin mencatat bahwa jawaban Anda yang diterima memiliki banyak upvote lebih sedikit daripada jawaban alternatif.
anak ayam

Jawaban:

8

Tambahkan di Anda .vimrc:

au BufEnter *.py :TagbarToggle<CR>

dimana

  • auadalah autocmd, jalankan perintah secara otomatis.

  • BufEnter adalah saat Anda memasukkan file untuk pertama kalinya.

  • *.py adalah untuk tipe file python.

  • dan sisanya adalah perintah untuk dieksekusi
kapil
sumber
2
Ini akan menambah autocommand tambahan setiap kali .vimrcbersumber. Untuk mencegah hal ini, garis harus dikelilingi dengan augroup yang menghapus perintah. Lihat :help augroup-delete.
Kaya
: augroup testgroup: autocmd! : au BufEnter * .py: TagbarToggle <CR> augroup END apakah boleh?
kapil
1
Terlihat bagus untukku!
Kaya
10

Menurut pendapat saya, metode paling bersih untuk melakukan ini adalah dengan menambahkan perintah ke file di .vim/vimfilesdirektori Anda :

~/.vim/after/ftplugin/python.vim

atau untuk Windows:

$HOME\vimfiles\after\ftplugin\python.vim

Teknik ini didokumentasikan dalam :help ftplugin-overrule(daftar item 3), meskipun konteksnya (mengubah pengaturan) sedikit berbeda.

Ini menawarkan manfaat berikut daripada teknik perintah otomatis yang dijelaskan oleh kapil .

  1. Kode lebih sedikit . Anda cukup menulis Vimscript yang ingin Anda eksekusi. Anda tidak perlu kode autocommand dan mengelilinginya dengan augroupdan autocommand!menghapus perintah.

  2. Lebih sedikit overhead . Vim sudah mendeteksi jenis file dan memeriksa keberadaan after/ftplugin/filetypefile: mengapa menambahkan perintah otomatis tambahan yang melakukan tujuan yang sama?

  3. Bersih.vimrc . Saya pikir lebih baik memisahkan fungsi tipe file spesifik dari saya .vimrc. (Namun, beberapa tidak setuju dengan ini: lihat kerugiannya, di bawah.)

Ini juga memiliki beberapa kelemahan kecil:

  1. Ini hanya berfungsi jika Anda menggunakan deteksi tipe file Vim. ( :help filetype)

    Namun, ini umumnya adalah salah satu pengaturan pertama yang orang aktifkan di .vimrc mereka, dan saya bertaruh bahwa hampir semua pengguna Vim sudah mengaktifkannya.

  2. Beberapa orang lebih suka menyimpan semua konfigurasi mereka di .vimrcfile mereka .

Kaya
sumber
1
+1 untuk ftplugin/<filetype>.vim, pemisahan keprihatinan yang lebih baik :)
LEI