Apa perbedaan antara set dan: set?

16

Saya sedang melihat plugin vim-masuk akal Tim Pope dan saya perhatikan ini di README ...

Lihat sumber untuk daftar fitur otoritatif. (Jangan khawatir, itu kebanyakan :setpanggilan.)

Ketika saya melihat sumbernya, :setpanggilannya seperti ini ...

set autoindent

Tidak ada :sebelum set.

Saya cukup yakin saya sudah benar-benar melihat :setdalam contoh .vimrcjuga.

Apa bedanya?

Formulir mana yang harus saya gunakan di saya .vimrc?

Ethan
sumber

Jawaban:

21

"Script" tidak lebih dari menjalankan urutan perintah ex. "Perintah ex" adalah apa yang Anda ketikkan saat Anda gunakan :di Vim. Sebagai contoh :wq, :set wrap, :e file, dll semua perintah ex.

Itu :bukan bagian dari perintah; itu hanya keystroke untuk memulai mode command-line; Anda tidak selalu perlu menyertakan :, misalnya ketika Anda membuat banyak perintah dengan |Anda tidak perlu mengulangi :lebih dari sekali. Misalnya, :write | quitakan berfungsi dengan baik.

Untuk kenyamanan, :mungkin disertakan. Ini membantu dengan copy / paste dan semacamnya, tetapi Anda tidak harus melakukannya. Itu tidak masalah. Faktanya, semua pemimpin :hanya diabaikan. :write,, writedan :::::::::writesemuanya setara dalam hal fungsionalitas (meskipun jelas tidak dalam hal kewarasan).

Seringkali berguna untuk memasukkan :dokumentasi dalam untuk memperjelas bahwa ini adalah perintah ex. Misalnya wbisa merujuk ke :watau perintah mode normal wuntuk pergi ke kata berikutnya.

Perhatikan bahwa ini berlaku untuk semuanya . Struktur kontrol seperti ifdan endifyang juga perintah hanya ex; Anda dapat mengetikkan sesuatu seperti ini:

:if 1
:echo 'one'
:endif

dari command line Vim baik-baik saja; tidak perlu untuk "skrip". Skrip Vim sangat "non-ajaib" dan "non-khusus"; semua yang dapat Anda lakukan dari ex commandline yang dapat Anda lakukan dalam skrip Vim, dan sebaliknya.

Martin Tournoij
sumber
6

Tidak ada perbedaan. Jika vim melihat :sebelum perintah di vimrc Anda (atau file vimscript apa pun) itu akan mengabaikannya. Juga, seperti yang disebutkan di atas, ini tidak spesifik untuk setperintah.

Biasanya :berarti bahwa perintah tersebut akan dijalankan oleh Anda alih-alih dimasukkan ke dalam vimrc Anda (atau file vimscript lainnya) , tetapi itu biasanya tergantung pada konteksnya. Secara pribadi saya pikir itu terlihat jauh lebih baik untuk tidak meletakkan titik dua di depan perintah dalam file vimscript, dan itu tampaknya menjadi apa yang dilakukan kebanyakan orang lain juga.

Untuk lebih lanjut tentang ini, lihat :help script.

Pohon cemara
sumber
:h scriptatau :h vim-script-intro(setara)
VanLaser