背景: - 最终的目标是在我的
if __name__ == '__main__': m = len(lines) dma = np.zeros(m * (m - 1) // 2, dtype=np.int8) pool = Pool(processes=4) idx = 0 for resultset in pool.imap(myfunc3, range(len(lines)-1)): lenres = len(resultset) dma[idx:lenres+idx] = resultset idx += lenres pool.close()
中添加一个脚本,如果我输入提交消息,它会改变文本颜色,从而警告我 很长(是的,我知道vim有这样的东西)。进度: - 我找到了
.bash_profile
选项让我写这个:read -n
问题: - 但是,运行此操作会使用户退出bash提示符。在正常提示下我需要一种方法来做这样的事情。我无法找到 关于这样的事情的信息。这是否意味着它不可能? 或者我只是以错误的方式去做?
我找到while true; do
# This hits at the 53rd character
read -rn53 input
# I have commit aliased to gc so the if is just checking if I'm writing a commit
if [ "${input:0:2}" = "gc" ]; then
printf "\nMessage getting long"
fi
done
选项让我写这个:
bind -x
它会听一个双引号,如果我写一个长提交消息告诉我有多少字符超过限制。同时将我键入的字符放入当前行,因为它被绑定吃掉。
现在我只需要一种方法来输入正则表达式,字符列表或至少一个变量而不是check_commit() {
if [ "${READLINE_LINE:0:13}" == 'git commit -m' ] && [ ${#READLINE_LINE} -gt 87 ]; then
echo "Commit is $((${#READLINE_LINE} - 87)) characters too long!"
fi
READLINE_LINE="$READLINE_LINE$1"
READLINE_POINT=$(($READLINE_POINT+1))
}
bind -x '"\"": check_commit "\""'
,这样我就可以听更多的键(是的,我知道\"
可能并不打算以这种方式使用。我可以自己检查性能/足迹/稳定性)。我尝试了bind -x
,"$char"
,"${char}"
和其他一些事情,但似乎都没有效果。这里的正确方法是什么?
答案 0 :(得分:0)
AFAIK,如果您希望在正常提示期间(评估PROMPT_COMMAND
和PS1
时)发生这种情况,则无法以理智的方式进行。这将涉及为每个insert-self
等同一个自定义编译的readline函数绑定。
如果您希望在使用prompt
内置的脚本中进行此操作,则可以通过循环
read -e -i $(munge_buf $buf) -n $(buf_warn_len $buf) -p $(buf_warning $buf) buf
像命令一样。这将允许您创建munge_buf()
以在需要时更改当前键入的文本,buf_warn_len()
以计算要警告的新len(如果已显示警告,则可能非常大),并{{1根据缓冲区派生警告消息。