tmux 滚屏

gnome-term 通过鼠标滚动可以滚屏,可是tmux默认鼠标滚动是查看历史命令,相当于方向键的上下。

要想滚屏只需要输入prefix + pageUp,prefix就是默认发送prefix绑定的键,默认为Ctrl + b,然后就可以像使用vi或emacs一样操作,具体取决于配置,比如在查找内容输入 “/” 等。 

如果需要开启滚动鼠标启动,可以进入命令模式,即“prefix + :”,然后输入setw mode-mouse on ,可选参数-g,表示是否应用于所有窗口。

如果不想每次输入这么麻烦,可以写入配置文件,

echo "set-window-option -g mode-mouse on" >> ~/.tmux.conf

注意:其实以上方式已经进入了复制模式,因此可以键入空格开始复制,回车确定,q退出。

转载请注明:http://krystism.is-programmer.com/若有错误,请多多指正,谢谢!

变量名前使用$的好处。

在这之前,不得不说, 我以前非常讨厌像php、perl、shellscript这样变量名加个美元符号(我又不是每个变量都和钱有关),但在近段时间写大量js时, 不得不说这样引用变量确实非常之方便。 因为在js中可能会出现大量字符串中嵌入函数,函数中嵌入函数, 以前遇到的都比较简单,字符串一律用双引号, 里面再有字符串用单引号, 也没有出现什么问题,但如果出现大量的嵌入时,我们就必须引入大量的转义,代码非常难看。而在需要字符串连接时(连接某个字符串)变量更是麻烦,代码非常不具有可读性,而使用了美元符号加{}后,一切都变得简单明了,$ 和{}基本不需要转义,因为我们很少直接使用它们的字面义。

说到这, 还是不喜欢php中不加$被无理取闹当作字符串, 有时神神秘秘的不知道传了什么参数, 我觉得语法分析中应该检测这个错误,字符串强制引号,避免一些离奇的错误。

转载请注明:http://krystism.is-programmer.com/若有错误,请多多指正,谢谢!

支持递归传输目录和在线编辑的ncftp工具

unix下的命令ftp, 只能put 、get 文本文件(plain file), 而不支持传输整个目录, 因此每次传输一个目录, 需要手动打包成一个tarball文件,这不可厚非的,压缩后毕竟能够节约网络带宽。 但作为一个传统的ftp,还是存在许多弊端, 最大的问题在于不支持断点传输, 若由于网络故障,则必须重新传输,当然一般我们可以使用更强大的ssh(scp)、wget、axel等传输。 对于只支持ftp协议的情况,则推荐一个ftp强化版-----ncftp,当然用的也是ftp协议的。ncftp是文字模式ftp程序的佼佼者,它具备多样特色, 包括显示传输速率,下载进度,自动续传,标住书签,可通过防火墙和代理服务器等。

ncftp与传统的ftp相比(直接引用http://hi.baidu.com/slip2008/item/bf4b252725cded8e9c63d1fc),主要有以下改进或变化:
 
1、子目录下载,采用递归的,下载整个目录及其子目录。
2、支持断点续传。一次传输没有完成,下次可以接着传输未完成的文件。
3、匿名ftp自动登录。目前大部分ftp站点都可以匿名登录,ncftp可以自动登录(默认方式)。
4、支持通过防火墙传输和代理服务器。
5、支持书签功能,可以将某个位置存在书签中方便以后直接跳转。
6、可以显示下载进度。
7、显示传输速率。
8、文件列表自动满页暂停。当ls文件列表超过一屏,ncftp会自动暂停,等待任意键继续。
9、默认是以binary方式传输数据。
10、支持文件名自动完成。例如服务器上有文件download.list,您只要输入get down<TAB>,系统可以自动填充文件名为download.list。
11、自动记忆站点的离开时的目录,下次登录会自动进入那个目录。
下面我们就详细介绍一下如何使用ncftp进行日常的ftp工作。ncftp的命令行语法是:ncftp [flags] [<host> | <directory URL to browse>]。flags常见的包括:
-u XX 使用用户名XX代替匿名。
-p XX 使用密码XX代替默认密码。
-P XX 使用端口XX,默认端口是21。
-d XX 如果连接不上,间隔XX秒重试。
-g XX 重试XX次。
命令和ftp基本一样, 支持参数更多些,比如get 可以加上-R参数进行递归式下载, put 可以支持递归式上传。 
还有一个强大的功能是支持调用本地的编辑器(比如vim,需要设置EDITOR环境变量,需要export),在线编辑文件。 原理是先下载到本地,生成一个临时文件,然后编辑完后在上传,因此可能有时会小卡下!
转载请注明:http://krystism.is-programmer.com/若有错误,请多多指正,谢谢!

firefox js如何传递event

对于IE和chrome, 貌似window.event是个全局变量, 但对于firefox, 则不是全局的, 因此我们在定义Onclick函数需要传递参数时,需要把event传入,并且只能是第一个参数:

document.getElementById("button").onClick = function(e) {

alert(e);

}

然而我们写成这样该如何传递参数呢?

<button Onclick="foo();">按钮</button>

这就没法传入事件参数了, 因此需要自己写一个getEvent函数:

function getEvent()
{
	if (document.all)
		return window.event;
	func = getEvent.caller;
	while (func != null) {
		var arg0 = func.arguments[0];
		if (arg0) {

			if ((arg0.constructor == Event || arg0.constructor == MouseEvent) || (typeof(arg0) == "object" && arg0.preventDefault && arg0.stopPropagation))
				return arg0;
		}
		func = func.caller;
	}
	return null;
}

然后传递时这样:

<button Onclick="foo(getEvent());">按钮</button>
转载请注明:http://krystism.is-programmer.com/若有错误,请多多指正,谢谢!