我已经有一段时间没有在 Vim
中编写类似于 HTML 的代码了,但最近又遇到了这个问题。假设我正在编写一些简单的 HTML
:
<html><head><title>This is a title</title></head></html>
如何快速编写
我已经有一段时间没有在 Vim
中编写类似于 HTML 的代码了,但最近又遇到了这个问题。假设我正在编写一些简单的 HTML
:
<html><head><title>This is a title</title></head></html>
如何快速编写
我喜欢简约的东西,
imap ,/ </<C-X><C-O>
imap <silent> <C-c> </<C-X><C-O><C-X>
。 - user699082<Esc>F<i
,这样它会将光标放回标签内部。 - mVChr,/
以关闭标签。 - thedanotto我觉得让vim为我编写完整的标签(包括开头和结尾),而不仅仅是结尾,更加方便。您可以使用由Tim Pope编写的优秀ragtag插件。使用方法如下(让|代表光标位置):
span|
按下CTRL+xSPACE
然后您将得到
<span>|</span>
您也可以使用CTRL+xENTER而不是CTRL+xSPACE, 然后您将获得
<span> | </span>
Ragtag能够完成更多任务(例如:在当前位置插入 <%= stuff %> 或 DOCTYPE)。您可能还想查看ragtag作者的其他插件,尤其是surround。
ragtag
:http://www.vim.org/scripts/script.php?script_id=1896 - neezer看看这个..
closetag.vim
Functions and mappings to close open HTML/XML tags
https://www.vim.org/scripts/script.php?script_id=13
我使用类似的东西。
Ctrl-_
,但这会使我的终端字体变小。 - alhelal如果你想做一些复杂的事情,sparkup 是非常好的。
这是他们网站上的一个例子:
ul > li.item-$*3
会扩展为:
<ul>
<li class="item-1"></li>
<li class="item-2"></li>
<li class="item-3"></li>
</ul>
使用 <C-e>
键执行此操作。
要执行问题中所给出的示例,
html > head > title{This is a title}
产生。<html>
<head>
<title>This is a title</title>
</head>
</html>
还有一个名为zencoding的vim插件:https://github.com/mattn/zencoding-vim
教程: https://github.com/mattn/zencoding-vim/blob/master/TUTORIAL
更新:现在称为Emmet:http://emmet.io/
教程摘录:
1. Expand Abbreviation
Type abbreviation as 'div>p#foo$*3>a' and type '<c-y>,'.
---------------------
<div>
<p id="foo1">
<a href=""></a>
</p>
<p id="foo2">
<a href=""></a>
</p>
<p id="foo3">
<a href=""></a>
</p>
</div>
---------------------
2. Wrap with Abbreviation
Write as below.
---------------------
test1
test2
test3
---------------------
Then do visual select(line wize) and type '<c-y>,'.
If you request 'Tag:', then type 'ul>li*'.
---------------------
<ul>
<li>test1</li>
<li>test2</li>
<li>test3</li>
</ul>
---------------------
...
12. Make anchor from URL
Move cursor to URL
---------------------
http://www.google.com/
---------------------
Type '<c-y>a'
---------------------
<a href="http://www.google.com/">Google</a>
---------------------
我喜欢尽可能简单地使用快捷键立即关闭我的块标签(与内联标签相对),并避免使用特殊键,如CTRL,尽可能地简化操作。当我开始编写块标签时,我喜欢使用这个快捷方式(感谢@kimilhee的回答; 这是他回答的改进版):
inoremap ><Tab> ><Esc>F<lyt>o</<C-r>"><Esc>O<Space>
类型:
<p>[Tab]
结果——
<p>
|
</p>
其中|
表示光标位置。
inoremap
表示在插入模式下创建映射><Tab>
表示一个右尖括号和一个制表符;这是要匹配的内容><Esc>
表示结束第一个标记并从插入模式中退出到普通模式F<
表示查找最后一个左尖括号l
表示将光标向右移动一位(不复制左尖括号)yt>
表示从光标位置复制到下一个右尖括号之前(即复制标记内容)o</
表示在插入模式下开始新行并添加一个左尖括号和一个斜杠<C-r>"
表示从默认寄存器("
)中在插入模式下粘贴><Esc>
表示关闭闭合标记并从插入模式中退出O<Space>
表示在光标上方插入一个新行并插入一个空格l
表示的是“右”而不是“左”,哈哈...多么有趣的错误。你觉得我的帖子怎么样?我注意到你没有点赞。 - Keith Pinsonau filetype html inoremap <buffer> ...
- wdsinoremap ><Tab> ><Esc>F<lyt>o</<C-r>"><Esc>kJxi
我删除了 0<Space>
并添加了 kJxi
。
向上移动一步,连接两行,删除一个字符,然后进入插入模式。 - Samundravim-closetag
它是一个非常简单的脚本(也可以作为vundle
插件使用),可以自动关闭(X)HTML标签。来自它的README
:
如果这是当前内容:
<table|
现在你按下>键,内容将变为:
<table>|</table>
如果您再次按下>,内容将变为:
请提供需要翻译的具体内容,谢谢。
<table> | </table>
这里有另一个基于易于找到的Web编写的简单解决方案:
:iabbrev </ </<C-X><C-O>
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
allml(现在是Ragtag)和Omni-completion(<C-X><C-O>)在像.py或.java这样的文件中不起作用。
如果您想在这些文件中自动关闭标签,可以映射如下。
imap <C-j> <ESC>F<lyt>$a</^R">
( ^R 是 Contrl+R:您可以像这样输入 Control+v 然后 Control+r )
(| 是光标位置) 现在如果您键入...
<p>abcde|
并键入^j
那么它会像这样关闭标签。
<p>abcde</p>|
git clone https://github.com/sukima/xmledit.git ~/.vim/bundle/xmledit
安装了 xmledit 插件。但是它只在编辑 .xml 文件时起作用。当文件扩展名为 .html 或 .htm 时,它无法正常工作。 - Leo