Actually,simplicity is not simple

一组能让我爽出内伤的 Vim motion

今天有人在群里说VIM的motionn特性,后去搜索了下,顿时让我爽得想哭啊,这就不是我一直所寻找的嘛!

对于天天写HTML的我来说命令vitvatvi"真的太有用了,尤其vi"编辑属性就别太爽,以前一直是移动到属性区域按i后再疯狂按删除键。

用vim这么长时间,现看到下边几句,对vim的认识提高一个台阶。呵呵~~

以下是选择区域内的内容:

ci[ 删除一对 [] 中的所有字符并进入插入模式
ci( 删除一对 () 中的所有字符并进入插入模式
ci< 删除一对 <> 中的所有字符并进入插入模式
ci{ 删除一对 {} 中的所有字符并进入插入模式
cit 删除一对 HTML/XML 的标签内部的所有字符并进入插入模式
ci” ci’ ci` 删除一对引号字符 (” 或 ‘ 或 `) 中所有字符并进入插入模式

注:如果想一起删除区域边界可把ciX中的i换成a;如果只是想选择这些区域可将ciX中的c改为v

input只能输入数字的方法

昨天写后台的表单时的需求,发现自己对这方面的了解很不够,在网友steven_2005的这博文中的实现方式不错,但和我的需求还差一点,所以改进了下(一个输入字符不能是小数点):

// input只能输入数字和小数点
function DigitInput(el,e) {
    //8:退格键、46:delete、37-40: 方向键
    //48-57:小键盘区的数字、96-105:主键盘区的数字
    //110、190:小键盘区和主键盘区的小数
    //189、109:小键盘区和主键盘区的负号
    var e = e || window.event; //IE、FF下获取事件对象
    var cod = e.charCode||e.keyCode; //IE、FF下获取键盘码
    //小数点处理
    if (cod == 110 || cod == 190){
        (el.value.indexOf(".")>=0 || !el.value.length) && notValue(e);
    } else {
        if(cod!=8 && cod != 46 && (cod<37 || cod>40) && (cod<48 || cod>57) && (cod<96 || cod>105)) notValue(e);
    }
    function notValue(e){
        e.preventDefault ? e.preventDefault() : e.returnValue=false;
    }
}

使用方式很简单,要注意的是函数得绑定在onKeydown事件上

<input type="text" onkeydown = "DigitInput(this,e);" />

或用事件绑定的方式(jQuery的代码):

$('input').bind('keydown', function(e){
    DigitInput(this, e);
});

实现IE下Array.indexOf函数

我一直觉得Array的indexOf函数很好用,可惜微软的IE浏览到IE8都还不支持,只有自己拓展了,下面的代码我认为是比较的实现。

if(!Array.prototype.indexOf){
    Array.prototype.indexOf=function(el, index){
        var n = this.length>>>0, i = ~~index;
        if(i < 0) i += n;
        for(; i < n; i++) if(i in this && this[i] === el) return i;
        return -1;
    }
}

这函数里的~~很有意思。~~是由两个~(按位“非”)运行符组成,发现实用性还是有的。

~~true; //1 Number
~~false; //0  Number
~~'123'; //123  Number
~~'0fs'; //0  Number

上面的测试代码可以告诉我们‘~~’对来对纯数字的String或布尔值转为数字很有用。以前写过这样的代码

[console.log, alert][!!document.all?1:0]('nootn.com简单其实不简单!');

现在可以这样写了

[console.log, alert][~~!!document.all]('nootn.com简单其实不简单!');

又回到小别的上海了!

时隔7个月又重新踏在上海这块宝地上了!

下面该再写些什么吧!但写什么呢?不知,算了记住这日子吧!2010年7月5日晚上九点!

现已经找到了份工作,离现住的地方挺近的,可惜还得换房子啊!烦!

360,你又成为新一个3721了吗?

别的不管,用半威胁的手段让用户开启你的功能无防;捆绑你的浏览器、保险箱、网页在线游戏、卸载竞争对手的软件等等。

这些我都忍了,但为什么每次重启360都自动启动,使用你的开机启动管理工具删除了360的自动启动功能,为何还会启动?你给我解释一下,是你的软件是废品还是说你这360已经是打着安全慌子的3721?

你和金山的那点事我不管,也没心情去管,但有一点:别拿我的机器当战场。再让我看到那些恶心的提示金山XXX的窗口我首先把你这软件给XXX掉。