Archive for the ‘Tips’ Category
Markdown真不错
Markdown是个轻量级的标记语言, 容易读, 容易写. 具体的介绍和语法可以去项目主页查看.
除了直接在某些网站(例如github)上使用, 还可以通过pandoc把Markdown文件转换成HTML, MediaWiki, LaTeX, 甚至Groff, Texinfo, DocBook, OpenDocument, EPUB. 更厉害的是, pandoc还可以套用LaTeX模板和CSS样式表, 真乃神器!
用Vundle管理Vim插件
一直以来, 管理Vim插件对我来说都是个困扰, 安装, 更新和卸载, 一个比一个麻烦. 我也尝试过很多插件管理工具, 但是都不如意, 直至遇到了Vundle.
Vundle利用git, 插件的git repo以及vim-scripts维护的GitHub repo, 自动安装, 更新和卸载插件. 它把这些繁杂的工作变得简单, 甚至, 成为一种享受.
Vundle的安装同样方便, 只需要执行:
git clone http://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
然后将下列代码加入vimrc中即可.
(插件名字由git repo决定, 可以在http://vim-scripts.org/vim/scripts.html页面中查找)
set nocompatible " be iMproved
filetype off " required!
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
" let Vundle manage Vundle
" required!
Bundle 'gmarik/vundle'
" vim-scripts repos
Bundle 'vim-plugin-foo'
Bundle 'vim-plugin-bar'
filetype plugin indent on " required!
然后, 安装插件:
:BundleInstall
更新插件:
:BundleInstall!
卸载不在列表中的插件:
:BundleClean
就是这么简单, 方便. Enjoy it!
Kindle Touch一键换字体
今天忍不住把Kindle Touch的字体给换了, 效果如图:
顺手搞了个一键替换或还原字体的越狱包, 参考了别人的方案(ref 4), 感兴趣的朋友可以点此下载.
warn:
1, 后果自负
2, 只适用于5.03之前的固件版本
3, 用的软链接方式, 不要删除fonts文件夹
4, 字体为文泉驿微米黑, 加粗显示的时候不很舒服, 不喜欢的请自己改
ref:
1, http://yifan.lu/
2, http://irising.me/2011/12/12591/
3, http://irising.me/2011/12/12600/
4, http://www.duokan.com/forum/thread-51409-1-1.html
关于子密钥
子密钥, 和主密钥绑定的密钥对. 它不麻烦, 很有用. 而且, 你已经在用了.
按照默认规则生成一个新密钥对, 在GnuPG控制台下list, 会有类似这样的输出:
pub 4096R/12345FOO created: 2001-01-01 expires: never usage: SC
trust: ultimate validity: ultimate
sub 4096R/54321BAR created: 2001-01-01 expires: never usage: E
可以看到, 新生成的密钥包含一个主密钥, 作用是签名, 而且还包含一个子密钥, 作用是加密.
使用子密钥的好处在于能够更换签名或者加密密钥, 而不破坏主密钥的关系网络和Key ID. 除了默认生成的用来加密的子密钥外, 你还可以添加更多的子密钥, 用来签名或者用来加密. 它们的公钥会随着主密钥的公钥发布, 方便其他人验证或者加密.
ref:
1, http://www.gnupg.org/gph/en/manual.html
2, http://wiki.debian.org/subkeys
让mutt提醒遗忘附件
最近也不知道是工作忙还是心不在焉, 发邮件经常漏掉附件. 尤其有时候是发给其它时区的同事和朋友, 一来一回就耽误一整天, 很影响效率.
这种事情想来也好处理, 把mutt的sendmail指向一个脚本. 先检测下正文中有没有出现Attach之类的词, 出现了而且没有附件的时候就提醒添加. 直到符合条件或者通过zenity等方式略过检查才发出去.
mutt中就下面这么一句. 但注意: 如果record, 没发送成功也会存一份, 用my_hdr Bcc:实现record就可以避免.
set sendmail="pre-sendmail"
我的配置和脚本还是放在这里, 基本上是抄的MuttWiki, 稍微做了些改进.
其实本来是想通过mutt的send2-hook, 然后exec <pipe-message>实现的, 但是交互性太差, 还是用脚本灵活些. 于是为了实现这个功能我顺便放弃了mutt内置的imap和smtp, 转而使用offlineimap和msmtp. 也好, 本地存储更快, 又能离线浏览. Happy accident!
PS: 另外介绍一个mutt小技巧, 标记所有邮件为已读:
macro index \cr "<tag-pattern>.\n<tag-prefix><clear-flag>N<untag-pattern>.\n"
Dropbox太棒了
Dropbox实在是太棒了.
1, 跨平台, Linux/Mac/Windows/移动设备
2, 安全, 传输采用SSL, 存储采用AES-256
3, 速度快, 且使用差分传输技术, 快上加快
4, 自动同步, 让你多个设备上的文件保持同步
5, 操作方便, 文件拖进去或者建立软链接都可以
6, 可以共享文件夹, 实现多人共同协作编辑和分享
7, 有版本控制功能, 文件丢了, 修改错了都能找回来
…
用我的推广链接注册, 初始容量会比默认的2G多250M.
PS: 默认的Linux客户端需要Nautilus, 没有的可以看看这篇Wiki.
让dd显示进度
最近在用dd处理一些东西, 大概执行一次两三个小时的样子, 但是dd默认没有进度输出, 很不方便.
好在, dd接收到SIGUSR1信号时会输出当前的读写进度, 可以利用这个特性和watch达到想要的效果, 例如这样:
dd if=/dev/zero of=/tmp/foo&
watch -n 10 pkill -USR1 ^dd$
ref:
1, http://www.commandlinefu.com/commands/view/4011/check-the-status-of-dd-in-progress
2, http://shellscripts.org/project/ddprogress
彩色Manpages
有句玩笑话: “RTFM(Read the F**ing Manual)”和”RTFSC(Read the F**ing Source Code)”是解决问题最有效的两种方法.
然而这么重要的man默认显示却只有一种颜色, 效果也只是简单的加粗, 下划线和闪烁, 实在是简陋, 效率也低. 所以我通过下面的配置给它加了几种颜色, 看起来舒服多了.
我加到.bashrc中的:
export LESS_TERMCAP_mb=$'\E[05;34m' # begin blinking
export LESS_TERMCAP_md=$'\E[01;34m' # begin bold
export LESS_TERMCAP_me=$'\E[0m' # end mode
export LESS_TERMCAP_se=$'\E[0m' # end standout-mode
export LESS_TERMCAP_so=$'\E[44;33m' # begin standout-mode
export LESS_TERMCAP_ue=$'\E[0m' # end underline
export LESS_TERMCAP_us=$'\E[04;33m' # begin underline
原理其实就是一些ANSI color escapes, 分别作用于原来的粗体, 下划线, 闪烁和提示消息, 格式如下:
{ESC}[{attr};{bg};{fg}m
attr:
Reset 00
Bold 01
Italic 03
Underline 04
Blink 05
Reverse 07
No Bold 22
No Italic 23
No Underline 24
No Blink 25
No Reverse 27
bg:
BLACK 40
RED 41
GREEN 42
YELLOW 43
BLUE 44
MAGENTA 45
CYAN 46
WHITE 47
fg:
BLACK 30
RED 31
GREEN 32
YELLOW 33
BLUE 34
MAGENTA 35
CYAN 36
WHITE 37
我用的是普通的8色, 感觉还好. 但如果你跟主席一样是个颜色控, 而且你用的终端也支持, 可以将bg和fg换成256色的. 格式相应的变为下面这样, fg和bg的取值范围为0-255:
{ESC}[{attr};48;05;{bg};38;05;{fg}m
========UPDATE========
刚Publish就发现了问题, Fedora 14中上面的设置不起作用!
查了下, 原来是因为某些发行版直接使用ANSI color escapes(也就是SGR escape sequence)去处理粗体, 斜体和下划线, 而我先前的做法只适用于老的控制序列. 废话不多说, 详细的解释去看grotty的手册, 解决方法如下:
export GROFF_NO_SGR=1
========UPDATE AGAIN========
写了个脚本(传送门), 可以打印出8色ANSI Color和256色XTERM Color, 方便颜色控们调试.
screen中动态设置标题
screen用起来很方便, 和xterm等虚拟终端配合起来更是花样多多. 例如, 我们可以根据screen的状态去动态地调整xterm的title. 这个功能我之前就实现过(传送门), 但是那些sequences很难懂, 我自己今天再看过都糊涂了, 所以赶紧记下.
hardstatus off
hardstatus string "screen(@%H): %t"
termcapinfo xterm* 'hs:ts=\E]0;:fs=\007:ds=\E]0;\007'
上面是我screen中这部分的配置, 第一句是禁止在hardstatus line中打印警告, 第二句是设置hardstatus line的内容(详见screen手册中的STRING ESCAPES), 第三句最难懂了, 它的意思是把xterm的titlebar当作screen的hardstatus line.
详细说第三句, hs表示终端有个hardstatus line, ts提供进入hardstatus line的 escape sequence, fs是离开时用的, ds是用于清除的. 它们各自的escape sequence是在xterm中定义的, 意义如下:
3.1 xterm escape sequences
Window and icon titles may be changed in a running xterm by using XTerm escape sequences. The following sequences are useful in this respect:ESC]0;stringBEL — Set icon name and window title to string
ESC]1;stringBEL — Set icon name to string
ESC]2;stringBEL — Set window title to stringwhere ESC is the escape character (\033), and BEL is the bell character (\007).
PS: 发现自己真是挺能折腾的…
Vim和BOM
最近发现个怪现象, 从Vim中复制的文本(xsel的方式)和实际文本有点点区别, 会在头部加几个不可见的字节(0xEF 0xBB 0xBF), 粘贴到别的程序里有时会引发错误.
查了下, 原来这几个字节是Unicode的BOM(Byte order mark), 用来标记UTF-16和UTF-32编码文件的字节序, UTF-8并不需要. 但因为这个文件我曾经用Windows的记事本保存过, 它自作聪明地加了个BOM, 而Vim识别到文件有BOM就会自动打开bomb这个选项(具体解释请看Vim中bomb和fileencodings的帮助), so…
于是, 这样, 然后保存就好了:
:set nobomb
小提示, 查看当前bomb是否打开可以这样:
:set bomb?





