是否有一种简单的方法来注释掉shell脚本中的代码块?
当前回答
你可以使用Vi/Vim的可视块模式,它是为这样的东西设计的:
Ctrl-V
Highlight first element in rows you want commented
Shift-i
#
esc
不加评论的是:
Ctrl-V
Highlight #'s
d
l
这是vi做这类事情的交互式方式,而不是计算或读取行号。
最后,在Gvim中使用ctrl-q进入Visual Block模式,而不是ctrl-v(因为这是粘贴的快捷键)。
其他回答
sunny256给出的已接受的答案中的here-doc技巧的一个变体是使用Perl关键字进行注释。如果您的注释实际上是某种文档,那么您可以开始在注释块中使用Perl语法,这允许您将其打印出来,将其转换为手册页,等等。
就shell而言,你只需要将'END'替换为'=cut'。
echo "before comment"
: <<'=cut'
=pod
=head1 NAME
podtest.sh - Example shell script with embedded POD documentation
etc.
=cut
echo "after comment"
(参见“在shell脚本中嵌入文档”)
在bash中:
#!/bin/bash
echo before comment
: <<'END'
bla bla
blurfl
END
echo after comment
END分隔符周围的“和”很重要,否则块内的内容(例如$(命令))将被解析并执行。
关于解释,请看这个和这个问题。
使用:'打开'和'关闭。
例如:
: '
This is a
very neat comment
in bash
'
这是维加斯的例子
在vscode中ctrl+K+C (ctrl+K+U取消注释)。
shell脚本上没有块注释。
使用vi(是的,vi),您可以轻松地从第n行注释到第m行
<ESC>
:10,100s/^/#/
(从第10行到第100行,用#符号代替第(^)行。)
联合国的评论是
<ESC>
:10,100s/^#//
(从第10行到第100行,替换行开始(^),后面跟着#,并注明//。)
Vi几乎在任何有/bin/sh的地方都是通用的。