Alias "clip" à rendre fonctionnel dans vim

  • Étape 1 :
    afin que vim lise le fichier des alias j’ai utilisé ce tuto alias-et-vim en remplaçant .bashrc par .bash_aliases


The ~/.bashrc file is only read for interactive shell sessions, and the shell that you start from Vim is not interactive. Furthermore, the bash shell does not expand aliases in non-interactive shells by default.

To use the $BASH_ENV « trick », make sure that your ~/.vimrc file (or equivalent) sets this environment variable to the pathname of a file that contains the necessary setup code:

let $BASH_ENV = "~/.vim_bash_env"

Then create ~/.vim_bash_env to say

shopt -s expand_aliases
source ~/.bashrc

This would enable the expansions of aliases even though the shell session is non-interactive, and then it would read your ~/.bashrc file where presumably your aliases are defined.

You may then use your aliases with Vim’s ! command.

  • Étape 2
    La commande à lier à un alias clip est :call system(‹ xclip ›, @0) . Elle doit s’effectuer lorsque je vais écrire , après la sélection et son enregistrement par y ( yank) , :!clip . Cette commande , écrite à la main , fonctionne bien et je récupère le texte sélectionné dans un fichier par xclip -o >fichier . Pas facile à mémoriser , alors un alias s’impose .

Le problème qui me bloque est la présentation à vim de cet alias qui doit être rendu compréhensible par bash pour pouvoir s’effectuer et si je fais simplement alias clip=’:call system(‹ xclip ›, @0)’ ça ne marche pas car , je l’interprète ainsi , la commande entre ’ ’ ne peut pas être lue par bash . J’ai essayé
clip=‹ echo :call system(‹ xclip ›, @0) › mais ça ne va pas . Une idée sur une solution ?

Les alias de bash ne sont pas utilisé par vim, il te faut créer tes alias dans la configuration de vim et ça passera par un plugin généralement.

Néanmoins un peu de lecture :

Tu ne veux pas tout simplement éditer ton fichier de conf de vim et activé le support de la souris, ma main à coupé que ça réglera tes problèmes :smiley:

j’ai activé ma souris comme tu me l’avais dit par mouse=a et tous mes problèmes sont réglés : C/C interne , vers l’extérieur , entre 2 terminaux et cerise sur le gâteau ( ça ne me sert à rien , mais bon ) , la copie de /var/log ouvert avec vim et la possibilité d’y coller du texte ( complètement inutile , mais bon là encore ) et pour finir la manipulation des registres . Tout ça basiquement bien sûr , juste ce dont j’ai besoin . Si j’essaie cette nouvelle méthode , redondante finalement* , c’est pour in fine garder celle qui me paraîtra la plus pratique . Et je pense qu’avec cet alias tous les cas de figure doivent être couverts , d’où son intérêt pour moi . À confirmer .

  • : pas si redondante finalement car c’est cette commande qui m’a permis de passer d’un terminal à un autre . Pas trouvé autre chose pour ce cas là .

merci pour la lecture mais j’ai préféré utiliser ceci qui est plus abordable vim-plugin .

Je ne comprends pas ce qui bloque :

:Alias clip :call system(‹ xclip ›, @0)

Capture d’écran_2023-03-11_14-56-27

ps :

  • j’ai essayé avec call plutôt que :call = idem
  • exemples donnés par l’auteur :
    :Alias …-range …dg =&l:diff?« diffget »:« dg »
    :Alias …-buffer …spl setlocal\ spellsetlocal\ spelllang=en
    :Alias…w!! write\ !sudo\ tee\ >\ /dev/null\ %
    :Alias…F find\ *=Eatchar("\ ")
    :Alias…th tab\ help