7/20/12

VIM : Aujourd'hui, c'est TIPEX !


Tip Ex Vim

Comment automatiser à la volée certaines actions en fonction de son contexte de travail.

On pourrait bien évidemment mettre ces commandes dans son .vimrc mais, à l'usage, il est bien plus pratique de modifier les commandes en fonction des circonstances. :m + flèche vers le haut donnera les précédents mappings et il suffit juste d'en modifier un pour l'usage du moment (donc très rapide).

 

7/13/12

VIM : macro


Vim possède une notion de macro. Grâce aux macros, on enregistre des actions qu'on peut réutiliser autant de fois qu'on le souhaite.

Classiquement :

  • On enregistre une macro avec q
  • On arrête une macro avec q
  • On utilise une macro avec @q

Si on met la macro dans un registre, ce que j'ai pour habitude de faire, on peut avoir par exemple :

  • On enregistre la macro dans le registre a par qa
  • On arrête la macro par q
  • On utilise la macro par @a

Dans l'exemple vidéo, on voit qu'il y a 29 lignes en bas à droite, donc on sait qu'il y a 15 noms de fleurs. Une fois exécutée notre enregistrement, il reste donc 14 noms de fleurs à traiter d'où le 14@a qui apparait à l'écran.

7/12/12

VIM : Copier/Coller Depuis/Vers une ressource externe


Vim possède 26 registres.

Le registre * communique avec le système. C'est celui qu'on va utiliser pour faire du copier/coller

On accède au contenu d'un registre Vim en utilisant "

Donc, pour accéder au registre *, on tape "*

Voici comment utiliser ce registre pour :

  • copier un texte provenant d'une source externe dans Vim
  • coller ailleurs un texte copié depuis Vim

Et si ça ne fonctionne pas avec votre version de Vim, il vous reste à faire ça ou utiliser :set paste. Un petit résumé de la soirée d'un ami mac-vimiste :) Cela aura au moins eu le mérite de réactiver un peu ce blog.

Pfff... j'ai écrit au moins pour 2 ans, là !

7/11/12

Compiling Vim 7.3 - Mac OS X Lion


Préambule

Si vous utilisez RVM, passez votre version de ruby sur celle par défaut (livrée avec le système) le temps de la compilation de Vim (surtout avec cette daube de RVM !). Rbenv is more Unix way ! Try it ! Use it ! Eat it !

 

1. Compiler gettext (Mac OSX Lion)

Si les messages de Vim en français vous importent peu, sautez directement au 2.

% cd
% mkdir -p src/tarball && cd src
% curl http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.1.1.tar.gz -so tarball/!#:^:t
% tar xvzf !$
% cd !$:t:r:r
% curl https://trac.macports.org/export/79617/trunk/dports/devel/gettext/files/stpncpy.patch -so stpncpy.patch
% patch -p0 < !$
% ./configure --disable-dependency-tracking --disable-debug --without-included-gettext --without-included-glib --without-included-libcroco --without-included-libxml --without-emacs --without-git --without-cvs
% make
% sudo make install
% sudo rm -rf /usr/local/share/doc/gettext/examples/

 

2. Compiler Vim (Mac OSX Lion)

% cd
% mkdir -p src/tarball && cd src

Créer les 2 fichiers ci-dessous dans src

Fichier apply_patches_vim73 :

rep="vim73-patches";
total_patches=$(ls -al ../$rep/7.3.* | wc -l)
for i in $(seq $total_patches); do
  echo "Application du patch $i";
  patch -p0 < ../$rep/7.3.$(printf "%.3d" $i);
done

Fichier configuration_vim73

export CONF_OPT_X="--without-x"
export CONF_OPT_GUI="--disable-gui"
export CONF_OPT_PYTHON="--enable-pythoninterp"
export CONF_OPT_RUBY="--enable-rubyinterp"
export CONF_OPT_CSCOPE="--enable-cscope"
export CONF_OPT_MULTIBYTE="--enable-multibyte"
export CONF_OPT_COMPBY="--with-compiledby='Votre nom '"
% curl ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2 -so tarball/!#:^:t
% bzip2 -dc !$ | tar xvf -
% mkdir vim73-patches && cd !#:^
% ftp ftp://ftp.vim.org/pub/vim/patches/7.3/
      ftp> prompt
      ftp> mget *
      ftp> quit
% cd ../vim73
% sh ../apply_patches_vim73
% source ../configuration_vim73
% env|grep CONF
% cd src
% make distclean
% make
% sudo make install

 

Créer un lien vi

% cd /usr/local/bin
% sudo ln -s ./vim vi

 

Modifier son .bashrc

export PATH=/usr/local/bin:$PATH

 

Ressourcer son .bashrc

% . ~/.bashrc

 

Done.