Es posible seleccionar un objeto heredoc o “aquí el documento” con vim?
-
23-09-2019 - |
Pregunta
Una de las grandes fortalezas de Vim es objeto a seleccionar , oferta la manipulación rápida de palabras dentro de contenido, párrafos y delimitadores surtidos.
Por ejemplo,
vi{
seleccionará todo dentro de un par de llaves {}.
¿Hay alguna funcionalidad equivalente para la selección de un aquí documentar o heredoc:
<<<HTML
....
....
HTML;
Sobre la base de La respuesta de ErichBSchulz me ocurrió la siguiente para un heredoc interno de selección:
nmap <F6> ?<<<<CR>w*kV?<<<<CR>j
?<<<<CR>w " find beginning tag (after <<<)
*k " find matching end tag and go up 1 line
V " enter visual mode
?<<<<CR>j " find beginning tag and go down 1 line
Solución
Pensando en los mensajes anteriores y tratando de tomar un paso más cerca. Éste no es fiable al 100% (es decir, se romperá si la etiqueta de inicio ocurre dentro del heredoc pero algo como:
?<<< "find begining
w " go to starting tag
* " find starting tag
v " enter visual mode (could use Upper V to do an 'ambientish' object select
n " find end tag
e " optional include end tag
Editar: Ken ha mejorado la secuencia que el anterior, por lo que le sugiero que utilice su mejor asignación de clave para una heredoc 'interior' seleccionar:
nmap <F6> ?<<<<CR>w*kV?<<<<CR>j
(esto se basa en heredocs estilo php)
Otros consejos
Para seleccionar heredoc de I suelen colocar el cursor en la primera línea, sobre la heredoc identificador y presione V *
V se iniciará una selección de línea, y * va a iniciar una búsqueda, ir a la siguiente coincidencia del identificador, al final de la heredoc ...
A heredoc <<''
terminado por una línea en blanco es fácil, si ya está en el inicio (?<<^M^M
):. Selecciona v}
de aquí hasta la línea de vacío
Por lo demás, en su ejemplo de lo mejor que puedo pensar es v/^HTML
.
No es este plugin que te permite definir sus propios objetos de texto.
http://www.vim.org/scripts/script.php ? SCRIPT_ID = 2,100
Me imagino que sería bueno para definir una manera que se podría decir 'yih' (tirón en heredoc) por lo que no tiene que ir explícitamente al principio.
Tenga en cuenta que no he engañado un poco con esto por mí mismo.
Si lo que desea es seleccionar una imagen visual que pudiera.
nnoremap <leader>ih ?HTML<cr>V/HTML<cr>