Trik lucu - selama kata kunci 'AKHIR' (yang, tentu saja, yang dipilih pengguna) tidak muncul pada barisnya sendiri di dalam materi yang akan dikomentari.
Jonathan Leffler
9
@kalengi: Ya; kata yang digunakan dalam kutipan bisa menjadi sesuatu yang nyaman; EOFadalah contoh klasik (dan demikian juga !, tanda seru sendiri), tetapi Anda dapat menggunakan SNURFLE_BURGERSatau classical_end_markeratau kata lain yang tidak muncul pada baris sendiri di bahan komentar. Saya akan berani bereksperimen dengan spasi dll, tetapi kata itu mungkin bekerja dengan baik juga.
Jonathan Leffler
4
Ini pasti bekerja tetapi adakah yang bisa menjelaskan bagaimana ini bekerja? Terima kasih
mbbce
5
@ MB_CE, lihat stackoverflow.com/questions/32126653/… . Yang mengatakan - itu menjalankan perintah (: ) yang tidak membaca inputnya dan selalu keluar dengan nilai yang sukses, dan mengirimkan "komentar" sebagai input. Tidak banyak.
Charles Duffy
2
Saya menganggapnya sangat jelek dan membingungkan untuk menulis kode aktif untuk membuat kode pasif ... cukup gunakan mode pilih blok lama yang baik dan tekan #; apa masalah besar dengan itu?
Rusty75
90
Tidak ada blok komentar pada skrip shell.
Menggunakan vi(ya, vi) Anda dapat dengan mudah berkomentar dari baris n ke m
<ESC>:10,100s/^/#/
(yang berbunyi, dari baris 10 hingga 100 mulai baris pengganti (^) dengan tanda #.)
dan batalkan komentar dengan
<ESC>:10,100s/^#//
(yang berbunyi, dari baris 10 hingga 100 mulai garis pengganti (^) diikuti oleh # dengan mencatat //.)
Trik yang bagus dengan ekspresi reguler pada vi ke posisi # di depan baris.
Atiq Rahman
5
Hanya tip - jika Anda menggunakan vim dan ini akhirnya menyoroti awal setiap baris, tambahkan |nohke akhir. Pipa memisahkan perintah tambahan dan nohuntuk nohighlight. Penandaan istilah pencarian akan secara otomatis dilanjutkan saat berikutnya Anda mencari sesuatu. Contoh::10,100s/^/#/g|noh
Matius
Saya ingin ini otomatis dari skrip. Apakah ada cara untuk melakukan itu pada file dengan vi tanpa perlu interaksi manusia?
Timothy Swan
1
@TimothySwan Saya membayangkan program gawk atau sed bisa melakukan itu ... entah bagaimana.
BeowulfNode42
cara mengomentari yang saya sukai (atau awalan) sebuah blok dengan vi: pergi ke awal baris yang ingin Anda mulai komentari (misalnya <SHIFT>+G 10 <ENTER>saat itu 0atau dengan cara lain untuk menavigasi). Kemudian gunakan <CTRL>+Vuntuk masuk ke mode blok visual dan sorot awal semua baris yang ingin Anda komentari (dalam contoh ini 90 J). Kemudian tekan SHIFT+Iuntuk menyisipkan sebelum blok yang disorot. Masukkan tanda komentar (mis. #) Dan tekan <ESC>untuk menyelesaikan awalan Anda. Penjelasan ini kedengarannya sangat panjang, tetapi dalam pengalaman saya itu jauh lebih cepat dalam praktek.
Ueffes
52
Kamu bisa memakai:
if[1-eq 0];then
echo "The code that you want commented out goes here."
echo "This echo statement will not be called."fi
Ini sepertinya hanya berfungsi karena teks yang dikomentari sebenarnya adalah kode. Saya mengalami masalah dengan komentar dengan pipa dan titik koma. Jawaban Sunny256 berhasil.
swdev
bahkan lebih ringkas akan []; menggunakan tes itu
Justin Duncan
27
Berikut harus bekerja untuk sh, bash, kshdanzsh .
Blok kode yang akan dikomentari dapat dimasukkan ke dalam BEGINCOMMENTdan ENDCOMMENT:
[-z $BASH ]|| shopt -s expand_aliases
alias BEGINCOMMENT="if [ ]; then"
alias ENDCOMMENT="fi"
BEGINCOMMENT
echo "This line appears in a commented block"
echo "And this one too!"
ENDCOMMENT
echo "This is outside the commented block"
Menjalankan kode di atas akan menghasilkan:
This is outside the commented block
Untuk membatalkan komentar , blok kode dengan demikian berkomentar
Saya suka ini. Apa artinya garis bawah ganda? Sejauh yang saya tahu itu hanya nama variabel menggunakan konvensi bahwa itu harus diperlakukan sebagai pribadi?
chessofnerd
Juga menyediakan penyorotan sintaks di sebagian besar editor dan dapat dipanggil jika diperlukan dengan $ __ meskipun saya akan menyarankan nama variabel seperti dokumentasi atau dokumen untuk kejelasan.
jasonleonhard
Anda juga dapat menambahkan kata lokal di depan ref di sini
jasonleonhard
Ini harus menjadi jawaban terbaik. Cukup masukkan beberapa nama variabel dummy alih-alih garis bawah ganda
B Abali
Sudah mencoba ini, tetapi gagal karena ada -F ';' di dalam blok untuk berkomentar.
Dalam semua kejujuran, mengapa terlalu banyak rekayasa ...
Saya menganggap itu benar-benar praktik buruk untuk menulis kode aktif untuk menghasilkan kode pasif.
Solusi saya: kebanyakan editor memiliki mode pilih blok. Cukup gunakan itu untuk menambahkan # ke semua baris yang ingin Anda komentari. Apa masalahnya...
Contoh notepad:
Untuk membuat: Alt - mousedrag ke bawah, tekan #.
Untuk menghapus: Alt-mousedrag ke bawah, geser ke kanan, hapus.
Pengguna kemungkinan besar berada di terminal. Tidak dapat mengasumsikan lingkungan mouse.
Gary
Apakah mereka masih ada? Saya biasanya mengedit dalam mode grafis dan menempel kembali menggunakan vi, itu akan menjadi solusi yang mudah.
Rusty75
2
Variasi pada trik di sini-doc dalam jawaban yang diterima oleh sunny256 adalah dengan menggunakan kata kunci Perl untuk komentar. Jika komentar Anda sebenarnya semacam dokumentasi, Anda kemudian dapat mulai menggunakan sintaks Perl di dalam blok komentar, yang memungkinkan Anda untuk mencetaknya dengan format yang bagus, mengonversinya menjadi halaman manual, dll.
Sejauh shell yang bersangkutan, Anda hanya perlu mengganti 'END'dengan '=cut'.
echo "before comment":<<'=cut'=pod
=head1 NAME
podtest.sh -Example shell script with embedded POD documentation
etc.=cut
echo "after comment"
'##' membantu saya dengan mudah menemukan awal dan akhir dari komentar blokir. Saya dapat menempel nomor setelah '##' jika saya punya banyak dari mereka. Untuk mematikan komentar, saya hanya menempelkan '1' di '[]'. Saya juga menghindari beberapa masalah yang saya alami dengan tanda kutip tunggal di blok komentar.
Jawaban:
Dalam bash:
The
'
dan'
sekitarEND
pembatas yang penting, jika tidak hal di dalam blok seperti misalnya$(command)
akan diurai dan dijalankan.Untuk penjelasan, lihat ini dan ini pertanyaan.
sumber
EOF
adalah contoh klasik (dan demikian juga!
, tanda seru sendiri), tetapi Anda dapat menggunakanSNURFLE_BURGERS
atauclassical_end_marker
atau kata lain yang tidak muncul pada baris sendiri di bahan komentar. Saya akan berani bereksperimen dengan spasi dll, tetapi kata itu mungkin bekerja dengan baik juga.:
) yang tidak membaca inputnya dan selalu keluar dengan nilai yang sukses, dan mengirimkan "komentar" sebagai input. Tidak banyak.Tidak ada blok komentar pada skrip shell.
Menggunakan
vi
(ya,vi
) Anda dapat dengan mudah berkomentar dari baris n ke m(yang berbunyi, dari baris 10 hingga 100 mulai baris pengganti (^) dengan tanda #.)
dan batalkan komentar dengan
(yang berbunyi, dari baris 10 hingga 100 mulai garis pengganti (^) diikuti oleh # dengan mencatat //.)
vi
hampir universal di mana pun ada/bin/sh
.sumber
|noh
ke akhir. Pipa memisahkan perintah tambahan dannoh
untuk nohighlight. Penandaan istilah pencarian akan secara otomatis dilanjutkan saat berikutnya Anda mencari sesuatu. Contoh::10,100s/^/#/g|noh
<SHIFT>+G 10 <ENTER>
saat itu0
atau dengan cara lain untuk menavigasi). Kemudian gunakan<CTRL>+V
untuk masuk ke mode blok visual dan sorot awal semua baris yang ingin Anda komentari (dalam contoh ini90 J
). Kemudian tekanSHIFT+I
untuk menyisipkan sebelum blok yang disorot. Masukkan tanda komentar (mis.#
) Dan tekan<ESC>
untuk menyelesaikan awalan Anda. Penjelasan ini kedengarannya sangat panjang, tetapi dalam pengalaman saya itu jauh lebih cepat dalam praktek.Kamu bisa memakai:
sumber
if [ ];
juga berfungsi.if false;
. stackoverflow.com/a/18019516/2097284Berikut harus bekerja untuk
sh
,bash
,ksh
danzsh
.Blok kode yang akan dikomentari dapat dimasukkan ke dalam
BEGINCOMMENT
danENDCOMMENT
:Menjalankan kode di atas akan menghasilkan:
Untuk membatalkan komentar , blok kode dengan demikian berkomentar
dari pada
dalam contoh di atas.
sumber
jika Anda dapat menghindari tanda kutip tunggal:
sumber
Gunakan
: '
untuk membuka dan'
menutup.Sebagai contoh:
Ini dari contoh Vegas yang ditemukan di sini
sumber
Di Vim:
shift-V
(masuk mode visual), ke atas sorot garis di blok:s/^/#/
perintahnya akan terlihat seperti ini:
tekan enter
misalnya
sumber
:s/^#/
Anda bisa menggunakan mode Blok Visual Vi / Vim yang dirancang untuk hal-hal seperti ini:
Uncomment akan menjadi:
Ini adalah cara interaktif vi dalam melakukan hal semacam ini daripada menghitung atau membaca nomor baris.
Terakhir, di Gvim Anda menggunakan ctrl-q untuk masuk ke mode Visual Block daripada ctrl-v (karena itu cara pintas untuk menempel).
sumber
Dalam semua kejujuran, mengapa terlalu banyak rekayasa ...
Saya menganggap itu benar-benar praktik buruk untuk menulis kode aktif untuk menghasilkan kode pasif.
Solusi saya: kebanyakan editor memiliki mode pilih blok. Cukup gunakan itu untuk menambahkan # ke semua baris yang ingin Anda komentari. Apa masalahnya...
Contoh notepad:
Untuk membuat: Alt - mousedrag ke bawah, tekan #.
Untuk menghapus: Alt-mousedrag ke bawah, geser ke kanan, hapus.
sumber
Variasi pada trik di sini-doc dalam jawaban yang diterima oleh sunny256 adalah dengan menggunakan kata kunci Perl untuk komentar. Jika komentar Anda sebenarnya semacam dokumentasi, Anda kemudian dapat mulai menggunakan sintaks Perl di dalam blok komentar, yang memungkinkan Anda untuk mencetaknya dengan format yang bagus, mengonversinya menjadi halaman manual, dll.
Sejauh shell yang bersangkutan, Anda hanya perlu mengganti
'END'
dengan'=cut'
.(Ditemukan di " Menanamkan dokumentasi dalam skrip shell ")
sumber
Mode lain adalah: Jika editor Anda TIDAK MEMILIKI opsi komentar,
DIBUAT
itu BEKERJA dengan editor APAPUN
sumber
Saya suka satu baris buka dan tutup:
'##' membantu saya dengan mudah menemukan awal dan akhir dari komentar blokir. Saya dapat menempel nomor setelah '##' jika saya punya banyak dari mereka. Untuk mematikan komentar, saya hanya menempelkan '1' di '[]'. Saya juga menghindari beberapa masalah yang saya alami dengan tanda kutip tunggal di blok komentar.
sumber