技术提示
您可能会认为,在有这么多优秀的 GUI IMAP 电子邮件客户端可用的情况下,基于字符的 Mutt 不会有太大的吸引力。然而,我们在Linux Journal 的许多人仍然沉迷于 Mutt,至少用于我们电子邮件使用的一部分。原因之一是您可以将 Mutt 配置成几乎任何您想要的行为方式。
理想情况下,您可以编写服务器端过滤器将您的邮件分类到适当的文件夹中,我也有许多过滤器就是用来做这件事的。然而,这些过滤器并不完美,许多新闻提醒、新闻稿等最终都会出现在我的收件箱中。我可以从主题行中发现它们。因此,我为 Mutt 创建了一个长长的宏列表,以便从收件箱索引中将邮件归档到特定的文件夹中。我可以用一个 Ctrl 键操作来整理邮件,这比用文件夹树拖放邮件到侧边栏(或者更糟糕的是,一个级联的“移动”菜单)要好得多。这是一个简短的宏按键列表示例。您可以将您自己的设置放在您主目录下的 .muttrc 配置文件中。
下面的宏列表让我可以按 Ctrl-R 将当前高亮显示的消息发送到我的 Read 文件夹(这里的 Read 是过去时的意思),Ctrl-P 将其发送到我的 Press-Releases 文件夹(它是 Folders 的子文件夹),Ctrl-N 将其发送到 News-Alerts,等等。正如您所看到的,我试图将字母与操作联系起来,以便使按键容易记住(Ctrl-K 将消息删除到垃圾邮件箱)。
macro index \Cr "s=Read\r" macro index \Cp "s=Folders/Press-Releases\r" macro index \Cn "s=Folders/News-Alerts\r" macro index \Ch "s=Folders/Humor\r" macro index \Ck "s=SPAM\r"
我也花了很多时间在预览窗格打开的情况下浏览消息。上面的宏列表在预览模式下不起作用。如果您希望在用分页器预览邮件时也能执行相同的操作,请添加一个重复的列表,如下所示
macro pager \Cr "s=Read\r" macro pager \Cp "s=Folders/Press-Releases\r" macro pager \Cn "s=Folders/News-Alerts\r" macro pager \Ch "s=Folders/Humor\r" macro pager \Ck "s=SPAM\r"
Mutt 为您提供了一种在文件夹之间导航的方法,但在某些情况下,它不如提供侧边栏文件夹树的 GUI 客户端那么容易,您可以在侧边栏文件夹树中单击要打开的文件夹。这里有一些宏可以导航到您最常用的文件夹以阅读您已归档的消息
macro index ",r" "c=Read\nOd=" macro index ",p" "c=Folders/Press-Releases\nOd=" macro index ",n" "c=Folders/News-Alerts\nOd=" macro index ",h" "c=Folders/Humor\nOd=" macro index ",k" "c=SPAM\nOd="
我已经习惯于将逗号键作为我的“go-to”键,因此我可以通过输入逗号键,然后再输入 p 来转到 Press-Releases 子文件夹。组合键 ,n 将我带到 News-Alerts,等等。如果逗号对您来说不直观,请选择另一个按键并相应地修改宏。
自然地,您会希望能够轻松返回收件箱。因此,我使用 ,i 组合键来完成此操作。再一次,如果您正在使用预览分页器,您可能需要创建一个重复项。只需将您的 IMAP 服务器地址替换为 <yourmailserver>,它应该就可以为您工作
macro index ",i" "cimap://<yourmailserver>/INBOX\nOd=" macro pager ",i" "cimap://<yourmailserver>/INBOX\nOd="
最后一点说明:您可能想知道为什么每个导航宏都以 \n 和 Od= 结尾。\n 执行移动到新文件夹的操作,而 0d= 告诉 Mutt 按日期对消息进行排序。这样,如果您在阅读邮件时更改了消息的排序顺序,当您使用宏命令更改文件夹时,Mutt 始终会使用日期排序。
您可以在 Mutt 在线手册 www.mutt.org/doc/manual 中找到自定义 Mutt 副本所需的所有信息。可能需要一些工作才能使 Mutt 按照您喜欢的方式执行,但是一旦您将其自定义为符合您的口味,您可能会发现很难再回到使用 GUI 电子邮件客户端。
这个脚本是 Linux Journal 网站管理员 Keith Daniels 和一位名叫 Karl 的读者共同努力的成果,Karl 修改了 Keith Daniels 的工作,并向我们提交了这个脚本。它允许您根据您可能记得的脚本中出现的关键字查找脚本。
目标
不要强制对每个脚本标题的长度进行四行限制。
允许多个搜索路径(不仅限于 ~/bin/)。
支持显示脚本的路径/名称,而无需将其硬编码到标题中。
#!/bin/bash #- #- NAME: ~/bin/scriptsearch #- PURPOSE: grep for patterns in all scripts # under preset search # paths; output header lines in each matching script #- NOTES: all lines beginning with '#-' are assumed # to be header lines #- USAGE: scriptsearch <grep pattern> #- # paths in which all scripts will be searched SEARCH_PATHS="${HOME}/bin /usr/local/bin" if [ ${1} ]; then for PATH in ${SEARCH_PATHS}; do echo -e "\n...searching ${PATH}...\n" # find list of matching files for current # search path MATCHES="`/bin/grep -li $1 ${PATH}/*`" for MATCH in ${MATCHES}; do # print summary for each matching file echo "#====<script> ${MATCH}" /bin/grep -i '^#-' ${MATCH} echo -e "#====</script>\n" done done fi
请注意,我处理第一个目标的方式的副作用是我的 Perl 脚本,它通常有一个带有以下内容的 print_usage() 函数print qq{...}跨越多行的代码也可以被搜索,而无需复制 print_usage() 函数。只需在 qq{...} 中的每一行前面加上 #-。
我为 ${MATCHES} 的 grep 命令添加了 -i 选项。这是一个非常简单的更改,但非常重要,因为我不想仅仅因为我的搜索关键字是小写的,但脚本包含大写字符的匹配项(变量名和注释可能是我们查找脚本的记忆线索,它们通常包含大写字母)而丢失相关结果。
Linux Journal 为我们发布的读者投稿技术提示支付 100 美元。请将您的提示和联系方式发送至 techtips@linuxjournal.com。