Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Déplacer un bloc en mode replace dans vim

10 réponses
Avatar
Francois Lafont
Bonjour Í  tous,

Régulièrement, j'ai le besoin de faire des petits schémas réseau assez basiques
en mode texte. Par exemple quelque chose comme ça :

----------------------------------------------------------
(Í  visualiser avec une police Í  chasse)

+------------+
| |
| |
| |
+---+----+---+
| |
| |
| |
+------------------------+ |
| |
| |
| +-----+------+
+-+----------+ | |
| | | B |
| A | | |
| | +------------+
+------------+
----------------------------------------------------------

Le truc qu'il me manque dans vim, c'est un moyen pour déplacer un bloc
sans toucher au reste du texte, un peu comme quand on est en mode « replace ».
On m'a indiqué ce plugin vim https://github.com/zirrostig/vim-schlepp qui
permet de déplacer un bloc très facilement (on sélectionne le bloc et on le
déplace avec la combinaison de touche de son choix) mais le souci c'est que
ça modifie aussi le placement des caractères en dehors de ce bloc. Par exemple
si, avec le plugin, je cherche Í  descendre le bloc « A » de quelques lignes,
j'obtiens ceci :

----------------------------------------------------------
(Í  visualiser avec une police Í  chasse)

+------------+
| |
| |
| |
+---+----+---+
| |
| |
| |
+------------------------+ |
|
|
+-----+------+
| |
| B |
| |
| +------------+
|
|
+-+----------+
| |
| A |
| |
+------------+
----------------------------------------------------------

alors que je voudrais avoir ceci, avec un bloc « B » qui ne bouge pas :

----------------------------------------------------------
(Í  visualiser avec une police Í  chasse)

+------------+
| |
| |
| |
+---+----+---+
| |
| |
| |
+------------------------+ |
|
|
+-----+------+
| |
| B |
| |
| +------------+
|
|
+-+----------+
| |
| A |
| |
+------------+
----------------------------------------------------------

Est-il possible de faire cela avec vim ?

J'ai tenté de faire une issue sur Gitbub au niveau du plugin (ici
https://github.com/zirrostig/vim-schlepp/issues/14) mais je pense que
le projet n'est plus vraiment maintenu et je ne suis pas assez calé en
vim (loin de lÍ ) pour hacker moi-même le code du plugin.

NB: je sais qu'il existe des sites en lignes pour faire ce genre de
schémas comme par exemple https://asciiflow.com/ mais je trouvais ça
sympa de le faire avec vim.

Merci d'avance pour votre aide.

--
François Lafont

10 réponses

Avatar
Francois Lafont
On 3/6/21 2:38 PM, Francois Lafont wrote:
(Í  visualiser avec une police Í  chasse)

Petite coquille, désolé.
s/chasse/chasse fixe/g
--
François Lafont
Avatar
william
On 2021-03-06, Francois Lafont wrote:
On 3/6/21 2:38 PM, Francois Lafont wrote:
(Í  visualiser avec une police Í  chasse)

Petite coquille, désolé.
s/chasse/chasse fixe/g

Cela dit meme si cela ne marche pas comme tu veux tu peux toujours faire
de l'edition vertical simplement dans vim.
ctrl+v etc ...
Avatar
Francois Lafont
Salut,
On 3/7/21 11:46 PM, william wrote:
Cela dit meme si cela ne marche pas comme tu veux tu peux toujours faire
de l'edition vertical simplement dans vim.
ctrl+v etc ...

Oui, j'utilise l'édition via control+v mais peux-tu me confirmer que l'exemple
que j'ai donné dans mon message initial n'est pas réalisable avec ce mode ? Car
si c'est faisable, c'est que j'ai loupé un truc.
À+
--
François Lafont
Avatar
william
On 2021-03-10, Francois Lafont wrote:
Salut,
On 3/7/21 11:46 PM, william wrote:
Cela dit meme si cela ne marche pas comme tu veux tu peux toujours faire
de l'edition vertical simplement dans vim.
ctrl+v etc ...

Oui, j'utilise l'édition via control+v mais peux-tu me confirmer que l'exemple
que j'ai donné dans mon message initial n'est pas réalisable avec ce mode ? Car
si c'est faisable, c'est que j'ai loupé un truc.

Si c est tout a fait faisable.
selection du block, copy (y).
selection du block, replacement par " "
collage du block.
il y a plusieurs commande mais ca marche
Avatar
Francois Lafont
Hello,
On 3/11/21 9:00 PM, william wrote:
Si c est tout a fait faisable.
selection du block, copy (y).
selection du block, replacement par " "

Est-ce que tu pourrais détailler cette dernière étape car je vois que je ne sais pas faire ça ? (je parle du remplacement du bloc par des espaces).
Merci de ton aide.
--
François Lafont
Avatar
Benoit Izac
Bonjour,
Le 12/03/2021 Í  20:22, Francois Lafont a écrit dans le message
<604bbf82$0$27429$ :
Si c est tout a fait faisable.
selection du block, copy (y).
selection du block, replacement par " "

Est-ce que tu pourrais détailler cette dernière étape car je vois que
je ne sais pas faire ça ? (je parle du remplacement du bloc par des
espaces).

:s/%V./ /g
--
Benoit Izac
Avatar
william
On 2021-03-12, Benoit Izac wrote:
Bonjour,
Le 12/03/2021 Í  20:22, Francois Lafont a écrit dans le message
<604bbf82$0$27429$ :
Si c est tout a fait faisable.
selection du block, copy (y).
selection du block, replacement par " "

Est-ce que tu pourrais détailler cette dernière étape car je vois que
je ne sais pas faire ça ? (je parle du remplacement du bloc par des
espaces).

:s/%V./ /g

heu simplement avec le bloc sélectionné, "r " (remplacement par un
espace)
Avatar
Benoit Izac
Bonjour,
Le 13/03/2021 Í  18:06, william a écrit dans le message
 :
Est-ce que tu pourrais détailler cette dernière étape car je vois que
je ne sais pas faire ça ? (je parle du remplacement du bloc par des
espaces).

:s/%V./ /g

heu simplement avec le bloc sélectionné, "r " (remplacement par un
espace)

Mince, ça s'est vu que je suis plutÍ´t un utilisateur d'Emacs. ;-)
--
Benoit Izac
Avatar
Francois Lafont
Salut,
Merci William et Benoit pour vos réponses (dans mon cas, celle de William
a fonctionné mais pas celle de Benoit, je ne sais pas pourquoi, c'est vraiment
parfois « cryptique » pour moi la syntaxe de vim.
Du coup, je suis parti sur le "r " de William. Mais le souci, c'est que si
je reprends mon exemple dans mon post initial, je n'arrive toujours pas Í 
obtenir le résultat souhaité. J'obtiens ceci :
------------------------------------------------------
(Í  visualiser avec une police Í  chasse fixe)
+------------+
| |
| |
| |
+---+----+---+
| |
| |
| |
+------------------------+ |
|
|
+-----+------+
| |
| B |
| |
| +------------+
|························
|···········
+-+----------+
| |
| A |
| |
+------------+
------------------------------------------------------
Les caractères « point » (·) sont en fait des caractères espace, c'est juste
pour mieux les visualiser. Ces caractères espace (des trailing spaces) m'embêtent
un peu mais, ͠ la limite, je peux faire disparaͮtre tous les trailing spaces
en une commande vim Í  la fin. Donc ce n'est pas bien grave.
En revanche, on peut voir que le bloc B a été altéré lors de la troisième
étape du paste du bloc A (copie du bloc A => OK, remplacement du bloc A par
des espaces => OK avec "r " mais le paste n'est pas OK). Est-il possible de
faire un paste en mode remplacement, ie sans que cela modifie la position
des autres caractères ?
--
François Lafont
Avatar
Francois Lafont
Bonjour,
Je me permets une petite relance de ce fil non résolu o͹ ma question était :
On 3/16/21 1:30 AM, Francois Lafont wrote:
Est-il possible de faire un paste [dans vim] en mode remplacement, ie
sans que cela modifie la position des autres caractères ?

Si ce n'est pas clair, le détail se trouve dans mon message précédent.
--
François Lafont