Comment puis-je rapidement citer / retirer des mots et modifier les citations (par exemple de '
à "
) dans Vim? Je connais le plugin surround.vim , mais je voudrais utiliser uniquement Vim.
204
Comment puis-je rapidement citer / retirer des mots et modifier les citations (par exemple de '
à "
) dans Vim? Je connais le plugin surround.vim , mais je voudrais utiliser uniquement Vim.
Réponses:
surround.vim va être votre réponse la plus simple. Si vous êtes vraiment opposé à son utilisation, voici quelques exemples de ce que vous pouvez faire. Pas nécessairement le plus efficace, mais c'est pourquoi surround.vim a été écrit.
ciw'Ctrl+r"'
ciw
- Supprimez le mot sur lequel se trouve le curseur et finissez en mode insertion.'
- ajoutez la première citation.Ctrl+r"
- Insérez le contenu du"
registre, alias la dernière copie / suppression.'
- ajoutez le devis de clôture.di'hPl2x
di'
- Supprimer le mot entre guillemets simples.hP
- Déplacez le curseur vers la gauche d'un endroit (en haut de la citation d'ouverture) et placez le texte juste supprimé avant la citation.l
- Déplacez le curseur d'un endroit vers la droite (en haut de la citation d'ouverture).2x
- Supprimez les deux guillemets.va':s/\%V'\%V/"/g
va'
- Sélectionnez visuellement le mot cité et les guillemets.:s/
- Commencez un remplacement.\%V'\%V
- Ne correspond qu'à des guillemets simples qui se trouvent dans la région sélectionnée visuellement./"/g
- Remplacez-les tous par des guillemets doubles.la source
ciw
et pas seulementcw
? Je trouve le premier déroutant et le second fonctionne très bien.ciw
fonctionne indépendamment de l'endroit où se trouve votre curseur dans le mot.cw
ne fonctionne que si votre curseur est au début du mot. Tu vois:help iw
..
commande. Pour le faire fonctionner, utilisezciw' Ctrl+r Ctrl+p"
. Se.
comportera alors comme vous le souhaitez pour le mot suivant: au lieu de se souvenir du contenu du registre, il se souviendra que vous voulez tout ce qui est dans le registre en ce moment (un peu difficile à expliquer, mais si vous essayez les deux, cela deviendra évident :-))C'était plus facile pour moi de le faire de cette façon
la source
Voici une cartographie qui pourrait vous aider:
Si vous n'avez pas modifié la variable mapleader, activez le mappage avec
\q"
\q'
ou\qd
. Ils ajoutent des guillemets doubles autour du mot sous le curseur, des guillemets simples autour du mot sous le curseur, suppriment respectivement les guillemets autour du mot sous le curseur.la source
map <Leader>' gewi'<Esc>A'<Esc>
à mon.vimrc
fichier pour insérer des commentaires de guillemet simple de la position actuelle jusqu'à la fin de la ligne; ce qui m'a aidé lors de la conversion de certains scripts MSDOS en bash.:vnoremap <leader>q c""<esc>P
.En plus des autres commandes, cela mettra tous les mots d'une ligne entre guillemets (selon votre commentaire)
ou si vous voulez réduire le nombre de barres obliques inverses, vous pouvez mettre un
\v
modificateur (très magique) au début du motifla source
:s/\v([a-Z]+)/"\1"/g
Les moyens macro!
appuyez sur qet qpour enregistrer dans le registre q (nous utilisons "q" comme raccourci pour mémoriser les "guillemets").
appuyez sur shift+ bdéplacez le curseur vers l'avant du mot actuel
itype de presse '(une seule guillemets)
appuyez sur escpuis appuyez sur epour passer à la fin du mot
appuyez sur apuis appuyez à 'nouveau pour entourer le mot de guillemets.
appuyez sur escpour passer en mode normal.
appuyez enfin sur qpour l'enregistrer dans le
q
registre.Comment utiliser
Vous pouvez modifier
step 4
avec ce que vous voulez {une ligne, un mot jusqu'à ce que vous trouviez un caractère, etc}.Rendre la macro enregistrée persistante
sauvegarder et quitter
ouvrez vos fichiers, allez à quelques mots
@q
si vous le faites correctement, des choses magiques devraient apparaître dans vos mots.
Vous pouvez effectuer ces étapes pour les autres macros que vous avez aimées.
la source
@q w
et ensuite vous pouvez encapsuler lesn
mots suivants avec des guillemets en utilisant avecn@j
.Envelopper les guillemets simples (par exemple)
ciw'<C-r>"'<esc>
fonctionne, mais répéter ne fonctionnera pas. Essayer:Cela met le contenu du registre par défaut "littéralement". Vous pouvez maintenant appuyer
.
sur n'importe quel mot pour le mettre entre guillemets. Pour en savoir plus, voir:h[elp] i_ctrl-r
et en savoir plus sur les objets texte sur:h text-objects
Source: http://vimcasts.org/episodes/pasting-from-insert-mode/
la source
ciw'<C-R><C-O>"'<Esc>
..
réécrira le contenu du dernier appel réel.Pour les utilisateurs de VSCodeVim, vous pouvez faire
vwS"
"
par ce que vous souhaitez envelopper.w
par n'importe quel autre opérateur de sélectionla source
viwS'
ce qui enveloppe le mot entre guillemets simples. De loin le plus simple.viwS"
Je ne connais aucune commande vim intégrée pour cela, mais utiliser
r"f'r"
pour passer de 'à "etr'f"r'
pour passer de" à "fonctionne si vous vous tenez sur le premier" ou ". La commander'
remplace tout caractère sous votre curseur par", etf"
vous fait passer au suivant ".la source
'r
et"r
), vous pouvez simplement taper.
Et si vous souhaitez modifier plus de guillemets;
et,
vous amener à la suivante ou précédente car ils répètent la dernièref/F/t/T
recherche dans la même direction ou dans l'opposé, respectivement.Ajout de devis
J'ai commencé à utiliser cette fonction rapide et sale dans mon
.vimrc
:Alors maintenant, je sélectionne visuellement tout ce que je veux (généralement via
viw
- sélectionner visuellement le mot intérieur ) entre guillemets et appuie sur Qpour les guillemets doubles, ou sur qpour les guillemets simples.Supprimer des devis
J'utilise vim-textobj-quotes pour que vim traite les citations comme des objets texte. Cela signifie que je peux faire
vaq
(sélectionner visuellement autour des guillemets . Cela trouve les guillemets les plus proches et les sélectionne visuellement. (Ceci est facultatif, vous pouvez simplement faire quelque chose commef"vww
). Ensuite, j'appuies
pour supprimer les guillemets de la sélection.Modification des devis
BAISER. Je supprimer les citations puis ajoutez des citations . Par exemple, pour remplacer des guillemets simples avec des guillemets doubles, j'effectuer les étapes suivantes : 1. Supprimer les guillemets simples:
vaqs
, 2. ajouter de nouvelles citations:vwQ
.la source
Si vous utilisez le plugin vim https://github.com/tpope/vim-surround (ou utilisez le plugin VSCode Vim, qui est livré avec vim-surround pré-installé), c'est assez pratique!
ajouter
laissez tomber
changement
Cela fonctionne même pour les balises html!
consultez le readme sur github pour de meilleurs exemples
la source
Voici quelques mappages simples qui peuvent être utilisés pour citer et retirer un mot:
la source
qw
qd
wq
VIM pour vscode le fait énormément. Il est basé sur un vim-surround si vous n'utilisez pas vscode.
la source
J'utilise nnoremap dans mon .vimrc
Pour citer un mot:
Pour supprimer les guillemets (fonctionne également avec les guillemets doubles):
Règle à retenir: 'sq' = guillemet simple.
la source
que dis-tu de ça?
la source
%
, cela ne fonctionnera que sur la ligne actuelle, sauf si vous avez sélectionné l'intégralité du fichierJ'ai écrit un script qui fait ça:
Pour l'utiliser, mettez simplement en surbrillance quelque chose, appuyez sur la commande l, puis tapez un caractère. Si c'est l'un des caractères que la fonction connaît, elle fournira le bon caractère de fin. Si ce n'est pas le cas, il utilisera le même caractère pour insérer des deux côtés.
Surround.vim peut faire plus que cela, mais c'était suffisant pour mes besoins.
la source
Exemple de carte en mode visuel pour ajouter des guillemets simples autour d'un bloc de texte sélectionné:
la source