取消注释先前注释行的命令行快捷方式是什么?

mir*_*phd 2 terminal keyboard-shortcuts bash command-line

Alt+ Shift+3只能注释掉,在后续调用中只需添加多个注释字符(散列),而不是打开/关闭注释。如何取消注释先前注释的行或切换注释?

Kam*_*ski 5

问题被标记为。这个答案是专门针对 Bash 的。在 GNU Bash 5.2.15 中测试。

定义以下 shell 函数:

function _toggle_comment {
case "$READLINE_LINE" in
   \#* )
        ((READLINE_POINT--))
        READLINE_LINE="${READLINE_LINE###}"
        ;;
   *   )
        READLINE_LINE="#$READLINE_LINE"
        ((READLINE_POINT++))
        ;;
esac
}
Run Code Online (Sandbox Code Playgroud)

并将其绑定到Alt+ #

bind -x '"\e#":_toggle_comment'
Run Code Online (Sandbox Code Playgroud)

(如果您的键盘布局#实际上是Shift+3那么绑定将重新定义您提到的Alt+ Shift+ 3。)

READLINE_LINE正是READLINE_POINT为了这种技巧。Alt在+上#,根据#命令行中是否存在前导,该函数删除或添加它,并相应地移动插入点。