vimrc - bagaimana cara memblokir komentar?

14

Saya tidak ingin mengomentari baris teks dalam file teks atau kode. Saya mencari untuk memasukkan komentar blok dalam file .vimrc . Untuk memasukkan satu baris, komentar "digunakan, misalnya:

" remove spaces and tabs as well  at the end of line automatically while saving
autocmd BufWritePre * :%s/\s\+$//e

Sekarang saya punya cukup banyak pengaturan / konfigurasi / plugin yang dikumpulkan selama bertahun-tahun setelah browsing melalui internet untuk menambahkan fitur keren. Saya ingin menambahkan beberapa blok komentar besar ke file .vimrc saya. Menambahkan "ke setiap baris adalah pilihan tetapi saya mencari sintaks komentar blok. Mirip dengan /**/di C.

//identik dengan "
/* */identik dengan _ ____ ?

Mencari Unix.SE, SO dan googling tidak banyak membantu.

mtk
sumber
1
Saya menduga fitur komentar multi-baris tidak ada dalam file vim-config.
Dilawar

Jawaban:

5

Saya rasa ini tidak mungkin. Yang terbaik yang dapat Anda lakukan adalah memblokir pilih beberapa teks, dan melakukan pencarian / ganti pada karakter pertama s/^/"/di vim untuk menyisipkan "ke awal setiap baris.

Plugin vim, NERD Commenter mungkin membantu mempermudah ini juga.

slm
sumber
1
Saya menggunakan solusinya:., + 3s / ^ / "/ di mana titik mewakili garis saat ini dan +3 mewakili jumlah garis berturut-turut (setelah garis titik).
daGo
6

Solusi saya adalah dengan membungkus kode di dalam a function.

Ini berfungsi dengan baik di vimrc, misalnya, untuk tes penyorotan heredoc in-place , yang juga membutuhkan komentar blok nyata tanpa karakter utama. Di vimrc saya, saya menggunakan blok seperti itu langsung setelah mengatur hertoc SyntaxRanges saya .

function! _blockcomment()

    " free text comment
    You can write free text here,
    but vim will try to highlight it as vimscript!

    " markdown heredoc
    test <<MD
    ### Nevertheless ###
    * for testing my fuzzy SyntaxRange heredocs
    * having no leading chars is essential
    * and the blockcomment function does the trick
    MD  

endfunction 

Solusi ini mirip dengan if 0trik @ Stéphane , yang tidak berhasil untuk saya. Pastikan untuk tidak pernah memanggil fungsi ini!

Juve
sumber
1

Satu trik:

  • tempatkan kursor Anda pada karakter pertama dari baris pertama untuk berkomentar
  • tekan Ctrl-V untuk masuk dalam mode Blok Visual
  • turunkan kursor hingga baris terakhir untuk memberi komentar
  • tekan I (shift + i) untuk masuk dalam mode penyisipan bersyarat
  • tekan '"' untuk berkomentar (kutipan dan spasi)
  • tekan Esc untuk keluar dari mode penyisipan

Semua baris yang Anda pilih sekarang diawali dengan string yang Anda ketikkan dalam mode sisipkan.

lororget
sumber
Terima kasih tetapi saya sedang mencari apa sebenarnya gaya komentar blok di vimrc .
mtk
Saya tidak berpikir ada fitur seperti itu di vim. Omong-omong, itu tidak begitu umum. Dalam banyak bahasa skrip, lebih sering menggunakan komentar satu baris pada berbagai baris.
lgeorget
1

Gunakan tCommentplugin untuk Vim: http://www.vim.org/scripts/script.php?script_id=1173

Ya, itu mendukung Python (ditambahkan pada 2011).

description: TComment berfungsi seperti toggle, yaitu, ia akan mengomentari teks yang berisi baris yang tidak diomentari, dan itu akan menghilangkan komentar pada teks yang sudah dikomentari (yaitu teks yang tidak mengandung baris yang tidak diomentari).

Jika jenis file didefinisikan dengan benar,: TComment akan mencari tahu string komentar mana yang akan digunakan berdasarkan nilai & komentar atau & komentar. Untuk beberapa tipe file, definisi komentar didefinisikan secara eksplisit. Anda dapat | tcomment # DefineType () | untuk menambahkan definisi Anda sendiri.

TComment tahu cara menangani kode tertanam dari tipe file yang berbeda dari tipe file utama, misalnya, wilayah ruby ​​/ python / perl dalam skrip vim, HTML atau JavaScript dalam kode php dll.

Sebagai operator (awalan dapat dikustomisasi melalui g: tcommentMapLeaderOp1 dan g: tcommentMapLeaderOp2):

gc{motion}   :: Toggle comments (for small comments within one line 
                the &filetype_inline style will be used, if 
                defined) 
gcc          :: Toggle comment for the current line 
gC{motion}   :: Comment region 
gCc          :: Comment the current line 

Peta kunci utama:

<c-_><c-_>   :: :TComment 
<c-_><space> :: :TComment <QUERY COMMENT-BEGIN ?COMMENT-END> 
<c-_>b       :: :TCommentBlock 
<c-_>a       :: :TCommentAs <QUERY COMMENT TYPE> 
<c-_>n       :: :TCommentAs &filetype <QUERY COUNT> 
<c-_>s       :: :TCommentAs &filetype_<QUERY COMMENT SUBTYPE> 
<c-_>i       :: :TCommentInline 
<c-_>r       :: :TCommentRight 
<c-_>p       :: Comment the current inner paragraph 

Ada juga seperangkat sekunder peta kunci dengan _ sebagai pemimpin (lebih disukai di terminal).

laebshade
sumber
1

Ada plugin yang mengubah hidup ini dengan tpopemeneleponvim-commentary

https://github.com/tpope/vim-commentary

Plugin ini menyediakan :

  • Kewarasan
  • Komentar yang terindentasi dengan benar
  • Tidak mengomentari baris kosong / tidak perlu

Penggunaan :

  • Instal melalui Vundle (atau saya kira Patogen).
  • Sorot teks Anda dan tekan :yang akan ditampilkan sebagai:<,'>
  • Ketik Komentar di sini :<,'>Commentarydan tekan enter.
  • Bom Tunas Anda sudah selesai.
Weston Ganger
sumber