让vim支持`+clipboard`

ubuntu中系统默认的vim真是折腾,竟然不支持+clipboard.

如果没有开启clipboard特性,那vim就没法和系统的粘贴板交互,也就是说我们用"+y命令复制之后,没办法粘贴到其他地方,比如浏览器等.

vim-gnome这个包给vim提供了+clipboard特性.我们只需要安装一下就可以了.

1
sudo apt-get install vim-gnome

然后再查看一下,应该已经成功开启了:

1
vim --version | grep clipboard

参考文章

win7将CapsLock映射为Ctrl

从狼厂离职之后,没有了mac,一直在用windows系统,以sublime作为开发工具.

最近实在受不了,装了个ubuntu虚拟机,回到vim.(暂时还不想买mac…)

作为一个vim党,快速移动手指很重要,很显然,键盘上的CapsLock键实在是太浪费了,必须把它搞成Ctrl键.

这有个windows注册文件,内容如下:

1
2
3
4
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00

将以上内容保存到一个reg文件中,比如caps_lock_to_ctrl.reg,双击注册到windows注册表,然后重启电脑即可.

参考文章

git设置global ignore

在个人主目录下新建一个~/.gitignore文件,填上想全局忽略的文件:

1
2
cscope.files
cscope.out

然后在~/.gitconfig中配置一下就行了:

1
git config --global core.excludesfile ~/.gitignore

执行完以上命令后,在~/.gitconfig中会添加一个新项目:

1
2
[core]
excludesfile = /Users/hushicai/.gitignore

搞定!

删除git submodule

git添加submodule时,很酸爽,但是删除时,很蛋疼。

git貌似没有直接提供删除submodule的方法,如果要删除submodule,需要以下步骤:

  • 删除.gitmodules中对应的节点
  • 添加.gitmodules到暂存区,git add .gitmodules
  • 删除.git/config中对应的节点
  • 删除暂存区缓存,git rm --cached path_to_submodule
  • 删除.git/modules/path_to_submodulerm -rf .git/modules/path_to_submodule
  • 删除工作区的submodule,rm -rf path_to_submodule

挺繁杂的……

微信的一道前端面试题

今天听说了一道微信的前端面试题,内容大概如下:

实现一个LazyMan,可以按照以下方式调用:
LazyMan(“Hank”)输出:
Hi! This is Hank!

LazyMan(“Hank”).sleep(10).eat(“dinner”)输出
Hi! This is Hank!
//等待10秒..
Wake up after 10
Eat dinner~

LazyMan(“Hank”).eat(“dinner”).eat(“supper”)输出
Hi This is Hank!
Eat dinner~
Eat supper~

LazyMan(“Hank”).sleepFirst(5).eat(“supper”)输出
//等待5秒
Wake up after 5
Hi This is Hank!
Eat supper

以此类推。

这题目我觉得挺有意思的,晚上下班回来就折腾了一下。

阅读全文

【翻译】开发者工具时间轴:现在提供了全部的故事

原文地址:http://updates.html5rocks.com/2015/04/devtools-timeline-improvements

开发者工具的timeline panel一直以来都是在性能优化路上最佳的第一站。 这个关于你的应用程序活动的集中化概览,可以帮助你分析花费在loading、scripting、rendering和repainting上的时间。 最近,我们升级了timeline面板,增加了更多的使用方法,以便你可以更加深入地了解你的应用程序性能。

我们添加了以下特性:

注意,使用本文中描述的Paint捕获选项会导致一些性能负担,所以只有你需要它们的时候,才去勾选它们。

阅读全文

数组全排列

如何输出一个数组全部可能的排列组合?

比如[1, 2],应该输出[1, 2][2, 1]

再比如[1, 2, 3],应该输出[1, 2, 3][1, 3, 2][2, 1, 3][2, 3, 1][3, 1, 2][3, 2, 1]

观察以上数据,其实可以推断出,假设一组数p = {r1, r2, r3, ..., rn},全排列表示为perm(p),数组中除rn之外的数据集合表示为pn = p - {rn}。

那么perm(p) = r1perm(p1), r2perm(p2), r3perm(p3), …, rnperm(pn)。

数据全部可能的排列组合就是r1perm(p1),r2perm(p2),….,rnperm(pn)的集合。

阅读全文

vim simple cursor moving

在vim normal模式下,你仅需几个按键,就可以健步如飞。

  • 到文件的开始处?

gg

  • 到文件的结尾处?

G

  • 到第n行?

nG或者ngg,其中n替换为行,比如第100行,100G或者100gg

  • 当前行第一个非空白字符?

^

  • 移到行首?

0,数字零。

  • 移到行尾?

$

  • 下一行第一个非空字符?

<CR>,即回车键

  • 上一行第一个非空字符?

-,中横线。

  • 向前移到一个单词的结尾处?

e

阅读全文