Ha pasado un tiempo desde que tuve que hacer un código similar a HTML Vim
, pero recientemente me encontré con esto nuevamente. Digamos que estoy escribiendo algo simple HTML
:
<html><head><title>This is a title</title></head></html>
¿Cómo escribo esas etiquetas de cierre para título, encabezado y html rápidamente? Siento que me estoy perdiendo una forma realmente simple aquí que no implica que tenga que escribirlas todas una por una.
Por supuesto que puedo usar CtrlPpara autocompletar los nombres de las etiquetas individuales, pero lo que me pone en el teclado de mi computadora portátil es en realidad obtener los corchetes y la barra oblicua.
html
xml
vim
autocomplete
wds
fuente
fuente
Ctrl-_
, pero esto hace que mi terminal sea una fuente pequeña.Encuentro bastante útil el uso del complemento xmledit . agrega dos piezas de funcionalidad:
<p>
), se expande la etiqueta tan pronto como se escribe el cierre>
en<p></p>
y coloca el cursor dentro de la etiqueta en el modo de inserción.Si luego inmediatamente escribe otro
>
( por ejemplo , escribe<p>>
), se expande en<p>
</p>
y coloca el cursor dentro de la etiqueta, sangrado una vez, en modo de inserción.
El complemento xml vim agrega código plegable y coincidencia de etiquetas anidadas a estas características.
Por supuesto, no tiene que preocuparse por cerrar etiquetas en absoluto si escribe su contenido HTML en Markdown y lo usa
%!
para filtrar su búfer Vim a través del procesador Markdown de su elección :)fuente
git clone https://github.com/sukima/xmledit.git ~/.vim/bundle/xmledit
. Pero solo funciona al editar archivos .xml. Cuando el archivo ext es .html o .htm, no funciona.Me gustan las cosas mínimas,
fuente
imap <silent> <C-c> </<C-X><C-O><C-X>
<Esc>F<i
al final de esto para que vuelva a colocar el cursor dentro de la etiqueta.,/
Me parece más conveniente hacer que vim escriba tanto la etiqueta de apertura como la de cierre, en lugar de solo la de cierre. Puedes usar un excelente complemento ragtag de Tim Pope. El uso se ve así (deje | marcar la posición del cursor) que escribe:
presione CTRL+x SPACE
y obtienes
También puede usar CTRL+ en x ENTERlugar de CTRL+x SPACE , y obtiene
Ragtag puede hacer más que solo eso (por ejemplo, insertar <% = cosas alrededor de este%> o DOCTYPE). Probablemente quieras ver otros complementos del autor de ragtag , especialmente surround .
fuente
ragtag
: vim.org/scripts/script.php?script_id=1896Si estás haciendo algo elaborado, la chispa es muy buena.
Un ejemplo de su sitio:
ul > li.item-$*3
se expande a:con un
<C-e>
.Para hacer el ejemplo dado en la pregunta,
rendimientos
fuente
También hay un complemento vim de codificación zen: https://github.com/mattn/zencoding-vim
tutorial: https://github.com/mattn/zencoding-vim/blob/master/TUTORIAL
Actualización: esto ahora se llama Emmet : http://emmet.io/
Un extracto del tutorial:
fuente
Cartografía
Me gusta que mis etiquetas de bloque (en lugar de en línea) se cierren inmediatamente y con un atajo lo más simple posible (me gusta evitar las teclas especiales como CTRLsiempre que sea posible, aunque uso
closetag.vim
para cerrar mis etiquetas en línea). Me gusta usar esto atajo al iniciar bloques de etiquetas (gracias a @kimilhee; este es un despegue de su respuesta):Uso de muestra
Tipo-
Resultado-
donde
|
indica la posición del cursor.Explicación
inoremap
significa crear el mapeo en modo de inserción><Tab>
significa un paréntesis de ángulo de cierre y un carácter de tabulación; esto es lo que se empareja><Esc>
significa finalizar la primera etiqueta y salir de insertar en modo normalF<
significa encontrar el último ángulo de apertural
significa mover el cursor a la derecha (no copiar el corchete de ángulo de apertura)yt>
significa tirar de la posición del cursor hacia arriba hasta antes del siguiente paréntesis angular de cierre (es decir, copiar el contenido de las etiquetas)o</
significa comenzar una nueva línea en el modo de inserción y agregar un corchete de ángulo de apertura y una barra<C-r>"
significa pegar en modo de inserción desde el registro predeterminado ("
)><Esc>
significa cerrar la etiqueta de cierre y salir del modo de inserciónO<Space>
significa comenzar una nueva línea en el modo de inserción sobre el cursor e insertar un espaciofuente
l
significaba "derecha" y no "izquierda", jaja ... qué gracioso error. ¿Qué te pareció mi publicación? Noté que no votaste a favor.au filetype html inoremap <buffer> ...
inoremap ><Tab> ><Esc>F<lyt>o</<C-r>"><Esc>kJxi
Quito0<Space>
y agregokJxi
. Vaya 1 paso hacia arriba, concatenar dos líneas, eliminar un carácter y luego pasar al modo de inserción.Revisa
vim-closetag
Es un script realmente simple (también disponible como
vundle
complemento) que cierra las etiquetas HTML (X) por usted. De esREADME
:Nota: ¿
|
está el cursor aquí?fuente
allml (ahora Ragtag) y Omni-complete (<CX> <CO>) no funcionan en un archivo como .py o .java.
si desea cerrar la etiqueta automáticamente en esos archivos, puede mapear así.
(^ R es Contrl + R: puede escribir así Control + v y luego Control + r)
(| es la posición del cursor) ahora si escribe ..
<p> abcde |
y escribe ^ j
luego cierra la etiqueta así ...
<p> abcde </p> |
fuente
Aquí hay otra solución simple basada en escritura web fácilmente encontrable:
Cierre automático de una etiqueta HTML
:iabbrev </ </<C-X><C-O>
Activando la finalización
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
fuente
Partiendo de la excelente respuesta de @KeithPinson (lo siento, todavía no hay suficientes puntos de reputación para comentar su respuesta), esta alternativa evitará que el autocompletado copie cualquier cosa adicional que pueda estar dentro de la etiqueta html (por ejemplo, clases, identificadores, etc.) .) pero no debe copiarse en la etiqueta de cierre.
ACTUALIZAR He actualizado mi respuesta para trabajar con
filename.html.erb
archivos.Noté que mi respuesta original no funcionaba en archivos que se usan comúnmente en las vistas de Rails, como
some_file.html.erb
cuando estaba usando ruby incrustado (por ejemplo<p>Year: <%= @year %><p>
). El código siguiente será trabajar con.html.erb
archivos.Uso de muestra
Tipo:
Resultado:
donde
|
indica la posición del cursorY como ejemplo de cómo agregar la etiqueta de cierre en línea en lugar del estilo de bloque:
Uso de muestra
Tipo:
Resultado:
donde
|
indica la posición del cursorEs cierto que los dos ejemplos anteriores se basan en
>[Tab]
señalar una etiqueta de cierre (lo que significa que tendría que elegir ya sea en línea o estilo de bloque). Personalmente, uso el estilo de bloque con>[Tab]
y el estilo en línea con>>
.fuente