分类: VIM/text |
作者:xbeta 版本:070705/070705 出自:善用佳软blog.sina.com.cn/xbeta
VIM是万能的,前提是VIM用户多学多思考。
http://www.vim.org/images/vim_header.gif
下面是xbeta用VIM编写/编辑html的心得,敬请指正。
下面是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
反正我是可以的。winxp2vim7.0
enc=utf-8
本文完。鸣谢www.newsmth.net VIM版redhair zwhuang happyvim等版友。
[2] filetype plugin
[2.1] 这种功能,肯定有人已经做过 filetype plugin,所以可以试用它们。
如 happyvim (那一夜的茶) 于
|推荐试用一下[xml.vim]
|对于编辑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中加入上述内容就可以实现窗口内自动折行。各浏览器不同:
[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
本文完。鸣谢www.newsmth.net VIM版redhair zwhuang happyvim等版友。