加载中…
个人资料
善用佳软
善用佳软 新浪个人认证
  • 博客等级:
  • 博客积分:0
  • 博客访问:24,390
  • 关注人气:3,357
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

经验:用VIM编写/编辑html文件

(2007-07-05 12:59:19)
分类: VIM/text
作者:xbeta 版本:070705/070705 出自:善用佳软blog.sina.com.cn/xbeta
  VIM是万能的,前提是VIM用户多学多思考。
  http://www.vim.org/images/vim_header.gif
  下面是xbeta用VIM编写/编辑html的心得,敬请指正。

[1] 基本思路
  为什么用VIM编辑html?最大的优点是代码最简洁,并且源码格式优美。在这方面要求不高时,我用的编辑工具为Nvu,参见[网页编辑器,我推荐Nvu]。
  为了更加方便,可以在VIM中通过remap或abb功能,提高效率。也就是说,用户键入几个字母,就能上屏一长串代码。当然,还有其他一些细节完善。

[2] filetype plugin
[2.1] 这种功能,肯定有人已经做过 filetype plugin,所以可以试用它们。
  如 happyvim (那一夜的茶) 于  (Tue Sep  5 12:48:26 2006)  提到:
   |推荐试用一下[xml.vim或者[xmledit]
   |对于编辑xml/html很有帮助,而且也包含了楼主要求的功能
  刚(070704)查到这个 [html.vim],看起来也不错
[2.2] 自己写
  上述现成作品功能太多——有时也不是好事,并且看使用说明(文件太长)也比较麻烦。我倾向于自己写,这样最精简,并且可以提高自己的VIM水平。遇到问题,可来版上讨论,或参照已有 filetype plugin。
  另,写出的这个vim文件,正常是放到 ftplugin目录。但我的放到了syntax 目录,因为我都放在这里,便于统一管理。
如果无效,请检查是否filetype plugin off。如果是,在 _vimrc 中加入filetype plugin on即可。

[3] 一些例子
  说这些例子,并且举出各种错误,主要是提倡一种精益求精追求完美的精神——这正与VIM强大至于各细节的特点对应。

[3.1] remap
  比如,希望输入h1 得到<h1></h1>,并且光标置于两个<><>中间,为插入模式。
  当前最好办法:inoremap <buffer> h1 <h1></h1><esc>4hi
  inoremap包括i nore map,
  分别表示:插入模式下有效,不重复,按键映射
  没有nore会导致死循环,cpu=100,死机!因为把h1换成"<h1></h1>",其中又有h1,又替换……。
  <buffer>表示仅限于当前buffer,这样不会影响你另外编辑的txt文本。
  最后的<esc>4hi结果如下:
  按esc,进入Normal模式
  按4h,光标左移4字符,从</h1>的后面移到前面,便于后续输入。
  为什么是4个而不是5个?手工试一下便知。
  按i,再次进入编辑模式,便于后续输入。

[3.2] abb
  推测:abb缩写的效率,会比map更高一些。所以,优先采用这一方式。
  abb <buffer> pre <pre style="word-wrap: break-word; white-space: pre-wrap; white-space: -moz-pre-wrap;">
  顺便说一下,pre中加入上述内容就可以实现窗口内自动折行。各浏览器不同:
  white-space: pre-wrap;       /* css-3 */
  white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
  white-space: -pre-wrap;      /* Opera 4-6 */
  white-space: -o-pre-wrap;    /* Opera 7 */
  word-wrap: break-word;       /* Internet Explorer 5.5+ */

[3.3] view in browser
  学到这样一句,在IE中打开htm文件。当然,直接写出exe应该也可以。
  inoremap <buffer> ;db <esc>:exe '!start RunDll32.exe shell32.dll,ShellExec_RunDLL ' . expand('%:p')<cr>

[4] 技巧
[4.1] map abc xyz时,abc的选择有学问。
  我用了 inoremap <buffer> img <img src=""><esc>hi 后,明显发现任何时候输入i键后,vim会延迟!因为它要等着判断,到底是输入ixxxxx,还是万一输入了img要替换成其他内容。
  我见到上述plugin的做法是,用半角分号引导,如下例。这样好一些。
[4.2] 可以用中文
  如 inoremap <buffer> ;im <IMG SRC="" ALT="[图片] by xbeta"><esc>21hi
  反正我是可以的。winxp2  vim7.0  enc=utf-8

本文完。鸣谢www.newsmth.net VIM版redhair zwhuang happyvim等版友。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有