Est-il possible d'objet-sélectionner un heredoc ou « document en » avec vim?
-
23-09-2019 - |
Question
L'une des grandes forces de vim -select objet , offre manipulation rapide de contenu à l'intérieur des mots, paragraphes et délimiteurs assortis.
Par exemple,
vi{
sélectionnera tout à l'intérieur d'une paire de {} accolades.
Y at-il une fonctionnalité équivalente pour sélectionner un ou heredoc:
<<<HTML
....
....
HTML;
Sur la base La réponse de ErichBSchulz je suis venu avec ce qui suit pour une heredoc intérieure sélectionnez:
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
La solution
La réflexion sur les postes précédents et d'essayer de les prendre un pas de plus. Cette fiabilité ne sera pas en 100% (c.-à-cassera si la balise de début se produit dans le heredoc, mais quelque chose comme:
?<<< "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
Edit: Ken a amélioré la séquence ci-dessus, alors je vous suggère d'utiliser sa meilleure cartographie clé pour une heredoc « intérieure » select:
nmap <F6> ?<<<<CR>w*kV?<<<<CR>j
(ceci est basé sur heredocs de style php)
Autres conseils
Pour sélectionner je place habituellement de heredoc le curseur à la première ligne, sur la identifiant heredoc et appuyez sur V *
V démarre une sélection de ligne et * va commencer une recherche, d'aller au prochain match de l'identifiant, la fin de la heredoc ...
A heredoc de <<''
terminée par une ligne vide est facile, si vous êtes déjà au début (?<<^M^M
). v}
sélectionne ici jusqu'à ce que la ligne vide
Dans le cas contraire, dans votre exemple, le mieux que je peux penser est v/^HTML
.
Il y a ce plugin qui vous permet de définir vos propres objets texte.
http://www.vim.org/scripts/script.php ? SCRIPT_ID = 2100
J'imagine que ce serait bien de définir un pour que vous puissiez dire « yih » (coup sec dans heredoc) de sorte que vous ne pas aller explicitement au début.
Notez que je ne l'ai pas dupé autour avec moi-même.
Si vous voulez juste un
sélectionnez visuelle que vous pourriez. nnoremap <leader>ih ?HTML<cr>V/HTML<cr>