专注于前端开发, 追求更好的用户体验, 更好的开发体验 [长沙前端QQ群:234746733]

工具

  • vim使用autocomplpop插件编辑html文件错误的解决

    / 分类: 工具 / 8 Comments

    autocomplpop插件绝对是一个出色的插件,边输入边提示,使VIM看起来像IDE了。废话不多说了,使用autocomplpop编辑html文件时,比如输入"<div " (DIV空格),这时会弹出提示来,当选择[class=" CDATA]或者[id=" ID]时,VIM会报错:

    Error detected while processing function htmlcomplete#complete tags:

    line 304

    E121: Undefined variable :classlines

    下面提供两个解决方法:

    1、我的:把plugin/acp.vim 的35/36行(html/xhtml那里 )删除掉,100-104/106-110行 删除或者注释掉。

    2、我也发了邮件给作者,他说没有发现任何问题(可能他用的LINUX),经过两次交流,他发给我个地址:http://likealunatic.jp/2009/09/29_acpvim.php,这里的方法是:编辑:autoload/htmlcomplete.vim,

    245-256行注释掉(246、247不注释),294-310行注释掉(295、296、307、308不注释)

    推荐第二种,因为我的方法,在html下面没有autocomplpop的功能了,当然,如不需要HTML的提示也可以用第一种。

  • 删除重复内容行

    / 分类: 工具,实践 / 1 Comment

    由于要处理一个两万多行的数据,但要删除其中内容重复的行,所以找了几个方法:

    1. 用sed替换重复内容,使用命令 -n "G;s/\n/&&/;/^\(.*\n\).*\n\1/d; s/\n//;h;P" "$(FilePath)" (这里是在editplus里的使用,注意$(FilePath)必须是带路径的文件名)。当然sed不需依赖editplus,可以单独使用的。优点:删除重复内容后,顺序结构不变。缺点:不支持UTF-8,处理大文件时(2w多行)就不行了。

    2.使用editplus-工具-排序,勾选"删除重复"。可惜不想把内容排序,却被自动排序了。(勾选"区分位置",好像没用?),这个效率相当快~差不多是瞬间完成的,之所以没放弃editplus,确实它的优点有很多。

    3.使用一个批处理

    @echo off
    :: 删除重复的行,但不能保留空行
    :: 对不符合变量命名规则、变量个数超过限制的文本都无法正确处理
    (echo 清除重复行后的文件内容:& echo.)>str_.txt
    for /f "delims=" %%i in (testText.txt) do (
      if not defined %%i set %%i=A & echo %%i>>str_.txt)
    :: start str_.txt

    当然也不支持utf8,效率也比较慢,处理2w多行用了1分多钟,不过排序没有改变:)。

  • editplus 正则删除 多行注释

    / 分类: 工具 / No Comments

    editplus的正则不能用于多行,这点比较郁闷。css里面的注释,有些内容都是多行的,而且还可能包含html语句,这样的情况editplus批量删除注释就不能用了。研究了一下,提供下我认为目前比较完美的方法:

    editplus删除多行注释:/*......*/的方法:
    1、把全文中的“\n”全都替换成“┓”。
    2、把“[<|/]/”替换成空。(删除注释里面的“</”、“//”类内容,注释里面带有"/"的话,第三步就查不到了)
    3、把“/\*.[^/]*\*/”替换成空。(不加[^/],就会波及到非注释内容)
    4、把"┓"再替换成"\n"。

    以上替换的时候都要勾上“正则表达式”。虽然步骤比较多,但是总算能实现替换多行了。
     

  • editplus SVN 设置

    / 分类: 工具 / No Comments

    SVN在团队开发的时候很强大。VS有VisualSVN插件,但是我不喜欢用VS。vim电脑上也有,虽然很多人说vim也很强大,不过我目前还是习惯editplus。也许以后会去适应vim吧。

    1、首先这里有一篇介绍,edtiplus使用SlikSVN来实现update、commit。当然前提也是要安装TortoiseSVN的。

    2、发现了一个更好的介绍,是deitplus wiki里面的介绍的方法。

    说明:方法1使用的SlikSVN是命令行端,方法2使用的TortoiseProc.exe是GUI端。

    下面我把方法二的实现方法稍微翻译一下:

    Subversion Commit

    说明:用TortoiseSVN校检文件并提交文件到服务器(当然,前提是你安装了TortoiseSVN)
    添加方法:编辑edtiplus 工具-用户工具-添加工具-程序
    菜单文本:SVN Commit
    命令: C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe
    参数: /command:commit /path:"$(FilePath)" /notempfile /closeonend:0
    初始目录: $(FileDir) Check: "Capture output", "Save open files"
    勾上"保存打开文件"。可以不勾"捕获输出",根据个人喜好吧,我是没勾。

    说明:TortoiseSVN 使用临时文件在 shell 扩展和主程序之间传递多个参数,(低于1.5.0版,必须增加/notempfile参数,如果不这样做,该命令将无法正常工作,/path指定的文件将被删除。)从 TortoiseSVN 1.5.0 开始,废弃/notempfile参数,不再需要增加此参数。

    Subversion Update, Delete, Rename, Checkout etc

    说明:SVN的更新、删除、重命名、校检等命令
    方法:只需要把上面的"参数"里的:/command:commit 用下面的替换(例如:/command:about

    :about 显示关于对话框
    :log 打开日志对话框
    :checkout 打开检出对话框
    :import 打开导入对话框
    :update 将工作副本的/path更新到HEAD,如果给定参数/rev,就会弹出一个对话框询问用户需要更新到哪个修订版本。为了避免指定修订版本号/rev:1234的对话框,需要加上/nonrecursive和/ignoreexternals参数(这2个参数我没加,还没遇到上述问题)
    :commit 打开提交对话框
    :add 将/path的文件添加到版本控制
    :revert 撤消一个文件自上次更新后的所有的变更
    :cleanup 递归清理工作拷贝,删除未完成的工作拷贝锁定
    :resolve 将/path指定文件的冲突标示为解决,如果加上/noquestion,将不会提示确认操作。
    :repocreate 在/path创建一个版本库
    :switch 切换至分枝/标记
    :export 将/path的工作副本导出到另一个目录
    :merge 打开合并对话框
    :mergeall 打开合并所有对话框
    :copy 复制工作副本至URL
    :settings 打开设置对话框
    :remove 从版本控制里移除/path中的文件
    :rename 重命名/path的文件
    :diff 启动TortoiseSVN设置的外置比较程序
    :help 打开帮助文件
    :relocate 打开重定位对话框
    :help 打开帮助文件
    :repobrowser 打开版本库浏览器对话框
    :ignore 将/path中的对象加入到忽略列表,仅对文件夹有效。
    :blame 打开文件的追溯对话框
    :createpatch 创建/path下的补丁文件。
    :revisiongraph 显示/path目录下的版本变化图。
    :lock 锁定一个文件,可以输入锁定的原因。
    :rebuildiconcache 重建windows的图标缓存,当系统图标缓存出了问题才需要这样做(会导致桌面的图标会重新排列)
    :properties 显示 /path 给出的路径之属性对话框。

    更多的命令看:tortoisesvn docs

    我只用了update、commit、add、revert、rename、remove、export、lock、unlock、resolve、checkout、blame、merge,后面几个都是不太常用的了。

    另外在editplus wiki,还发现了一个不错的东西:打开当前文件的文件夹(使用svn的话,这个功能就很实用了)。方法,在用户工具里添加-程序:
    菜单文本:Current Location(当前文件的文件夹)
    命令:%systemroot%\explorer.exe /e,/root,\local disk, 参数:$(FileDir)
    初始目录:空着
    勾上:退出时关闭窗口、保存打开文件

  • 用css 写的一个浏览器检测

    / 分类: 开发,工具,实践 / No Comments

    这个用css hacks 判断浏览器大概是上个月写的,其中的hacks基本涵盖了大部分浏览器,本页面经过测试的浏览器:IE5.0、IE5.5、IE6、 IE7、IE8(beta1&beta2)、Opera 9.5, Firefox 3, Safari4、K-Meleon、Google Chrome。 其实用css判断浏览器是没有什么意义的,其主要意义就在于css hack在多浏览器下的使用,及如何用更少的css代码来实现各种主流浏览器的兼容。这个页面里的css hacks基本上囊括了ie系列(ie5.0-IE8)的csshack,同时也加入了不太常用的针对Opera和Safari的css hacks。

    演示可以见:https://xhl.me/demo/html/browser_detector.html

    在css hacks方面,我觉得最好不要用!important来提升指定样式的优先权,我不喜欢这它,因为如果使用它的话,你可能会发现写出的css代码相对较多。当然也不是完全不用它,目的只是当我们加入hacks时,是否要考虑一下如何才能使css的代码更精简?顺便也应该想到,当我们写XHTML代码时,是否考虑某处用div合适,还是ul合适,或者是dl合适?当我们写javascript的时候呢,是否也可以使用最少的代码来实现某一效果?有些人只是写出了div、css代码就很自豪的说自己已经会div、css了,当我问他浏览器兼容和HTML标签语义化时,他却说不出。其实有很多地方值得我们去研究,上次帮公司做的网页,css和js代码基本都被我压缩的不能再压缩了,先手工压缩再机器压缩,很爽很爽:), 不过他们说我变态~。其实这样网站的效率才能达到最高。

    我的做法就是在做网页时,应该以firefox来作为参照,然后再在ie和其他浏览器下测试,这样写出的css代码可能会是最少的。还有就是善用display:inline来解决ie下margin加倍,善用clear:both,有时也可以这样:<!--[if IE]><link rel="stylesheet" type="text/css" href="ie.css" /><![endif]-->,给IE单独做一个css。因为之前做的是门户级的网站,写了很多页面,从中也学到了很多新知识,一时想不起来了,有时间再整理出来。还有只要结构写的好,不需要hack大部分也都能兼容。能不用hack就不用。