Xupeng's blog

Mar 20, 2008 - 4 minute read - Comments

VIM 魔术: 图文实例展示

绩效评估,计算工作时间,顺便就拿 VIM 来说事吧,在 VIM 中变个小魔术,完成这个小任务;) 原始材料是这样的:

original text

这是原始的按照时间顺序进行的统计。我想要的结果是,分别计算出每人的工作时间,那么第一步,去掉每行末尾的 “Indicator Edit Delete”。 首先录制一个宏,可以在命令模式下使用这样的按键序列:ggqd0fId$jq 把这串按键序列分开来开是这样的意思:

  • gg: 回到文件的第一行
  • q: 开始录制一个宏
  • d: 定义了宏的名字是 d
  • 0: 回到行首
  • fI: 光标在行内移动到第一个 I 字符处
  • d$: 删除从光标处到行尾的所有字符
  • j: 移动到下一行
  • q: 结束宏的录制

okay,宏录制完了,把它绑定到 F7 键上,这样子: :map <F7> @d<Enter> 这是一个冒号命令,就是在命令模式下,依次输入上面的按键(<Enter>指代回车),好,现在可以一直按着 F7 键不动,很快文件就变成了下面的样子:

Mar 13, 2008 - 1 minute read - Comments

给本本升级到了 4G 内存!

今天终于把本本的内存升级到了 4G,其实 2G 内存在日常工作和娱乐中已经足够使用了,甚至大部分时间都是用不完的,之所以要升级到 4G,是因为我需要跑

Feb 19, 2008 - 1 minute read - Comments

python函数之max和reduce

问题: 我有这样的一个列表:

['a.b.c.d11u.e.f.g', 'e.f88.g', 'caa3.z.brr', 'z.48.ff.ee']

需要找节点最多的一个(节点间由.分割)

看似简单的工作,要用 Pythonic 的方法来做,还是要对 Python 的内置函数有一定程度的熟悉,比如这里可以用最熟悉不过的max,但是会用到它并不常用的可选参数:key

node_list = ['a.b.c.d11u.e.f.g', 'e.f88.g', 'caa3.z.brr', 'z.48.ff.ee']
max_node = max(node_list, key=lambda n: n.count('.'))

在这里,使用key参数改变了max比较列表元素的方法,达到了完成任务的目的。