Vim secara otomatis melanjutkan komentar ketika saya menekan Enter dalam mode Insert, yang menurut saya sangat membantu.
Namun, saya tidak ingin komentar berlanjut setelah menekan 'o' dari mode normal untuk memasukkan baris baru di bawah akhir komentar.
Saya membaca bahwa saya perlu menghapus opsi o
dari saya formatoptions
, jadi saya meletakkan baris ini tepat di akhir file vimrc saya:
set formatoptions-=o
Tapi itu tidak mengubah apa-apa, dan ketika saya mengeksekusi :set formatoptions
dari iside of vim itu menunjukkan pilihan format saya croql
.
Bagaimana cara saya menyingkirkan 'o'?
Edit:
Saya telah mengikuti beberapa langkah yang ditunjukkan dalam komentar oleh Sato Katsura:
Solusi dimulai dengan menjalankan
:verb set fo
untuk melihat di mana opsi format terakhir diubah.
Inilah output untuk verb set fo
:
formatoptions=croql
Last set from /usr/share/vim/vim73/ftplugin/vim.vim
sumber
.vimrc
, jadi kami tidak dapat membantu sama sekali sampai Anda mempostingnya. Saya menduga sebuah plugin mengubahnya, atau itu tidak menjadi sumber dengan benar.set formatoptions-=o
di vimrc saya tidak berfungsi?", Bahwa ini menonaktifkan komentar ketika menekano
adalah kebetulan :-)Jawaban:
Saat
vim
dimulai, ia dijalankan$VIMRUNTIME/ftdetect.vim
untuk mengetahui jenis file apa yang Anda edit; kemudian, jika Anda telah'ftplugin'
mengatur, ia sumber$VIMRUNTIME/ftplugin.vim
mana sumber$VIMRUNTIME/ftplugin/&filetype.vim
(lihat:help startup
lebih detail).Anda dapat mengubah atau menimpa
$VIMRUNTIME/ftplugin.vim
atau$VIMRUNTIME/ftplugin/&filetype.vim
. Buat folder dan subfolder di direktori home Anda bernama.vim/after
.Jika Anda ingin mengganti opsi format untuk semua plugin tipe file, edit
$HOME/.vim/after/ftplugin.vim
, atau edit$HOME/.vim/after/ftplugin/lua.vim
(atau gantilua
dengan bahasa apa pun - dalam kasus Anda, ituvim
). Untuk penjelasan yang tepat tentang cara kerjanya, lihat:help 'runtimepath'
(dan:help :runtime
).Masukkan konten berikut ke dalam file:
Anda dapat melihat apakah itu berhasil dengan menjalankan
:scriptnames
. Anda harus mendapatkan daftar seperti berikut:Perhatikan baris 11 dan 12. Jalur file Anda akan terlihat sedikit berbeda.
sumber
formatoptions
, namun saya.vim/after
bersumber setelah plugins itu ...:scriptnames
.formatoptions
dalam~/.vim/after/ftplugins.vim
tidak bekerja - maka saya temui argumen ini yang semacam-of menjelaskan mengapa.Saya menemukan bahwa saya dapat memberikan solusi darurat menggunakan autocommand.
Baris berikut dalam
.vimrc
file Anda harus menerapkan opsi format baru di mana-mana:Namun, ini tidak benar-benar menyelesaikan masalah; Saya masih tidak mengerti mengapa yang sederhana
set
tidak cukup, dan seperti yang telah ditunjukkan dalam komentar solusi ini tidak ideal.sumber
formatoptions
(misalnya Perl, Ruby, dan beberapa lainnya mengatur ini). Ini sepertinya solusi yang bisa diterima?o
terlepas dari jenis file, dalam hal ini tampaknya tepat.Saya memiliki pengalaman serupa dengan OP.
Saya menemukan bahwa
t
sedang ditambahkan ke sayaformatoptions
meskipun sengaja berusaha untuk menonaktifkannya.Setelah menggunakan
:verbose set fo
untuk memastikan itu berasal dari .vimrc, saya perhatikan bahwa perilaku tampaknya tergantung pada tempat saya meletakkan formatoptions dalam file .vimrc saya. Saya menemukan bahwa itu terjadi karena tempat saya meletakkanset nocompatible
file saya:Ternyata ini secara khusus disebut dalam
:help nocompatible
:Setelah mengikuti saran yang baik ini, saya
formatoptions
dipertahankan sesuai keinginan. Saya tidak tahu apakah OP mengalami masalah ini atau apakah itu interaksi lain, tapi saya senang mengetahui apa yang menyebabkannya. Semoga ini membantu orang lain mencari tahu apa yang (awalnya tidak bisa dijelaskan) mengubah pengaturan mereka.Saya juga suka theonlygusti autocmd- ada beberapa opsi yang saya tidak ingin atur apa pun jenis filenya. Aku melihatmu
t
,.sumber
Karena banyak dari kita pengguna Vim menderita dari ini, saya pergi dan menyelidiki ini lebih sedikit.
Solusi saya adalah membuat
$HOME/.vim/after/ftplugin.vim
seperti yang disarankan oleh @ abcq2 hanya untuk menyadari, itu tidak akan mengubah apa pun. Mengingat daftar yang diberikan oleh:scriptnames
, file itu sumbernya terlalu dini. Namun, saran kedua untuk membuat$HOME/.vim/after/ftplugin/lua.vim
file LUA memang membantu.Dengan
strace
ing, saya belajar bahwa tipe-generik setelah-plugin bersumber sebelum tipe-file dan tipe-spesifik setelah-plugin bersumber setelah tipe-file. Tidak terlalu intuitif, tetapi begitulah cara kerjanya.Ada lebih banyak informasi di blog saya tentang ini.
sumber
after/ftplugin
akan membantu. Alih-alih, cara yang lebih baik adalah dengan menggunakan penggantian jenis file tertentu (baik menggunakan perintah otomatis FileType atauafter/<filetype>.vim
file tertentu ). Lihat juga bantuan di:h ftplugin-overrule
after/<filetype>.vim
jawaban saya.Saya melihat untuk melihat file / jalur mana yang
vim
mencoba memuat, menggunakanstrace
(seperti yang dijelaskan di sini ), kemudian membuat~/.vim/after/plugin/
direktori (itu adalah lokasi konfigurasi terakhir yangvim
berusaha memuat), lalu menyinkronkan saya~/.vimrc
ke lokasi itu:Apa yang saya lakukan dengan
strace
:Pada dasarnya, saya berlari:
... lalu segera berhenti
vim
(:q!
). Selanjutnya, saya memuat~/vim_strace
($ vim ~/vim_strace
) dan pergi ke akhir (:$
). Kemudian saya mulai membaca dari bawah mencari garis yang dimulai denganopenat(AT_FDCWD, "/home/karl/.....
.Hal pertama yang saya lihat adalah:
Tapi itu bukan tempat saya menginginkan opsi konfigurasi saya. Baris berikutnya, tepat di atas
.viminfo
garis, adalah:... "Tidak ada file atau direktori", eh? Sepertinya pemenang. Jadi, itulah yang saya pilih.
Sekarang, bekerja dengan sempurna.
Semoga ini bisa membantu seseorang di suatu tempat.
sumber
vim
untuk menghormati opsi dalam.vimrc
file. Harap baca kembali, dan pastikan Anda mengerti, baik pertanyaan maupun jawaban saya.~/.vim/after/plugin/formatoptions.vim
denganset fo-=o
lebih enak ... Tapi itu masih tidak berfungsi ketika plug-in tipe file menimpanya. Misalnya, buka Vim (tanpa file, atau file yang tidak terkait), lalu gunakan:e
untuk membuka atau membuat*.vim
file. Anda akan melihat bahwa opsi format sudah adao
di dalamnya lagi, karena sudah ditetapkan untuk buffer ituftplugin/vim.vim
danafter/plugin
file Anda tidak akan bisa menimpanya.:set rtp?
Anda akan melihat bahwa itu~/.vim/after
adalah terakhir. Tapi, seperti yang disebutkan sebelumnya, ini tidak benar-benar berfungsi karenafo
akan diatur ulang oleh plugin ft dan itu benar-benar masalah di sini.~/.vimrc
setelah plugin lain dimuat, sehingga memungkinkan saya~/.vimrc
untuk menimpa default, seperti yang dimaksud.