Je remonte le post pour poser une petite question à propos de la coloration des pages de man avec vim.

Chez moi elle n'est pas faite correctement, sur la section 3 de printf (man 3 printf) avec le pager less (ou most), chaque occurence de printf est en gras, les arguments sont souligés et il y a d'autres petites choses comme ça.
Avec le pager view comme pager je n'ai que les noms des sections et le prototype de la fonction qui sont coloriés ainsi que quelques références vers d'autres pages de man, et divers petits trucs.

Est ce que vous avez le même comportement chez vous ?

J'ai essayé de voir d'où ça pouvait venir et visiblement, le texte passé à vim ne contient pas les séquences d'échappement qui indique où se situe le texte en gras, souligné etc... Et vim se base uniquement sur des expressions régulières pour colorier les titres, noms des fonctions, bref les quelques éléments qu'il arrive à colorier...

Si quelqu'un sait comment récupérer comment récupérer le texte des pages de man avec les séquences d'échappement, je suis preneur.
7 jours plus tard
Je viens de découvrir un truc sympa en faisant une faute de frappe : accéder à une manpage.
Par exemple, dans un script shell, vous avez sed d'écrit. Vous avez besoin d'aide, mettez vous au début du mot puis K, et hop le man s'affiche

[edit] Quelqu'un aurait des astuces pour le changement de buffer? parceque je trouve :edit, :next et :previous vraiment chiant.
pour le changement de buffer tu as :bN où N est le numéro de ton buffer, et tu as également :bn (buffer next). Sinon pour avoir la liste des buffers ouverts tu as :ls
Hop, deux trucs découverts y a pas longtemps :

z+Enter vous amène le curseur en haut de la fenêtre.
(y a aussi zt : comme top, zb, comme bottom, et z. comme middle)

Dans le genre plugin "live-changing" : vim-taglist
http://vim-taglist.sourceforge.net/

Et puis aussi CTRL+U, CTRL+D, pour scroller vers le haut (up) ou vers le bas (down), d'une moitié d'écran.
(plus pratique que de scroller par écrans entiers)
On peut crypter un fichier avec vim via la commande :X.
Il faut ensuite le sauver.
A la prochaine ouverture du fichier, vim demande la clé de chiffrement.
En tout cas, cette fonction marche mieux que celle d'emacs qui nécessite l'installation du paquet gnupg et qui est plus lourde d'utilisation.

Dans vim, on peut changer de tampon sans le sauver (comme dans emacs) via la commande :set hidden

Par défaut, en mode normal, on ne peut pas se positionner après le dernier caractère d'une ligne. La commande :set ve=all remedie à ce problème et permet même de se déplacer sur les espaces virtuels et d'y coller du texte. Si le curseur se trouve en bout de ligne, on peut, par exemple, supprimer le dernier mot en faisant ldb
On peut bien sûr, aussi, utiliser diw pour faire cela ou c_w en mode insertion.
Au fait, si quelqu'un a des informations précises sur l'algorithme utilisé, ça m'intéresse.

Pour info, il est spécifique à vim, et il est dit dans la doc que l'algorithme en question est "cassable" :
:help :X a écritThe algorithm used is breakable. A 4 character key in about one hour, a 6
character key in one day (on a Pentium 133 PC). This requires that you know
some text that must appear in the file. An expert can break it for any key.
When the text has been decrypted, this also means that the key can be
revealed, and other files encrypted with the same key can be decrypted.
C'est absolument pas le cas avec GPG, pour lequel aucune méthode de décryptage réalisable en un temps raisonnable n'est connue. (ou divulguée, suivant votre niveau de paranoïa)


EDIT : encore un truc sur lequel je suis tombé par hasard :
le plugin qui est dans /usr/share/vim/vim71/plugin/tohtml.vim
Pour convertir votre joli code tout coloré dans vim en un joli html:
:runtime tohtml.vim
:TOhtml
(vous pouvez bien sûr le runtime dans votre vimrc)
Vim utilise un chiffrage à clé symétrique.
On a donc intérêt à utiliser une clé assez longue si on veut protéger des informations assez longtemps.

Effectivement, emacs, avec gnupg, permet d'utiliser un chiffrage clé assymétrique ou à clé symétrique. Mais, dans le dernier cas, la clé n'est demandée qu'une fois quand on veut crypter un document...
On n'a donc pas le droit à l'erreur.
A propos, je voudrais savoir si ça ne vous dérange pas trop le tic de vim à reculer d'un caractère quand on quitte le mode insertion ?

On peut, de toute façon, toujours mapper la touche Echap: imap <esc> <esc>l
  • [supprimé]

Beta Pictoris a écritA propos, je voudrais savoir si ça ne vous dérange pas trop le tic de vim à reculer d'un caractère quand on quitte le mode insertion ?
Du tout -- enfin, cela m'avait géné dans certains de mes premiers mappings, mais il y a des contournements.
Beta Pictoris a écritOn peut, de toute façon, toujours mapper la touche Echap: imap <esc> <esc>l
Je te le déconseille fortement. C'est le coup à foutre en l'air quantité de plugins qui n'utilisent pas les nore-mapping (soit parce que cela ne colle pas avec le besoin, soit par manque d'expérience/recul/flemme de l'auteur du plugin).
Un conseil, apprends plutôt à te servir de 'a'(fter/ppend)
Je me doutais déjà de la réponse que j'allais avoir.
Effectivement, modifier les commandes d'origine va perturber les autres commandes imap.
D'ailleurs, avec ce mapping, ce sont maintenant les commandes d'insertion "a","I",.. qui font avancer le curseur d'un caractère...
Mais bon, c'est un peu plus naturel puisqu'on a plus tendance à se déplacer et faire des modifications en allant vers la droite.
Cela dit, on peut aussi mapper la combinaison <esc>l à une autre touche.

Enfin, si on veut, quand-même, garder la touche <esc> pour quitter le mode insertion, on devrait, plutôt, mapper de cette façon:
:inoremap <esc> <right><esc>
4 jours plus tard
Trouvé sur le fil des astuces emacs 😉 :

Pour remplacer le contenu entre deux parenthèses : ci)
ça marche aussi avec ci(, ci[, ci{ etc.

PS : merci geenux
  • [supprimé]

Oui, le combotage action + motion est une vimmerie qui change la vie -- d'ailleurs, je me sers bien plus souvent de =a{ que de ci{.

Et pour attraper un paramètre: i, ou a,
-> http://code.google.com/p/lh-vim/source/browse/cpp/trunk/plugin/omap-param.vim (lh-vim-lib juste à côté est requis)

(Oui, c'est bien de la vile pub, je vais donc détailler le comment)
Pour sélectionner des zones de texte (et pas seulement jusqu'à une position), il faut définir un o(nore)mapping (comme pour les "jusqu'à"), mais cette fois il faut :
1- se positionner au début de la zone,
2- passer en mode visuel (:normal! v)
3- se positionner à la fin de la zone

Cela a l'air d'être un effet de bord d'un détournement des rouages internes de vim. En attendant, cela marchote (on peut faire un redo sur un "ci(toto<esc>", mais pas sur un "ci,toto<esc>" 🙁)

NB: Ce mécanisme a été évoqué dans le tutoriel sur la définition des mappings sur vim.wikia -> http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-_Tutorial_%28Part_1%29
Avoir vim patout avec soit
Il vous suffit d'avoir une clef USB ou un HDD externe et d'aller télécharger: http://portablegvim.sourceforge.net/

(je fais encore quelques testes avec et je vous fais un feedback)
scholi a écritAvoir vim patout avec soit
Il vous suffit d'avoir une clef USB ou un HDD externe et d'aller télécharger: http://portablegvim.sourceforge.net/

(je fais encore quelques testes avec et je vous fais un feedback)
J'ai déjà la version actuelle (pour windows) sur une clé usb.
Je lance directement gvim de la clé: bon, c'est un peu lent mais ça fonctionne bien.

Qu'apporte donc cette version mobile ?
12 jours plus tard
Sympa l'utilisation de vim pour lire les man ! J'ai trop souvent le reflexe :wq pour quitter n'importe quel logiciel :lol:

Moi aussi j'ai une astuce sympa pour les gens qui (essayent 😃 ) de coder en C :
L'autocompletion comme avec C-n et C-p mais en utilisant la touche <tab> (comme avec bash ou zsh)
En effet avec set cindent on à plus trop besoin de la touche <tab> quand on code...

Du coup j'ai trouvé ce code (qui vient d'ici : http://fr.gentoo-wiki.com/TIP_Compl%C3%A9tion_C_avec_vim )

à mettre dans ~/.vimrc
"Debut de Completion
function InsertTabWrapper(direction)
let col = col('.') - 1
if !col || getline('.')[col - 1] !~ '\k'
return "\<tab>"
elseif "backward" == a:direction
return "\<c-p>"
else
return "\<c-n>"
endif
endfunction
inoremap <tab> <c-r>=InsertTabWrapper("forward")<cr>
inoremap <s-tab> <c-r>=InsertTabWrapper("backward")<cr>
" Fin de Completion
EDIT : y'a de la lecture intéressante ici : http://www.docmirror.net/fr/linux/howto/programming/Vim-HOWTO/Vim-HOWTO-5.html
Je viens de découvrir un truc: en mode insertion C-w supprime le mot précédent.
pratique ton astuce philpep-tlse
Juste pour dire qu'il y a un script qui s'appelle supertab, qui est très sympa à l'usage :
http://vim.sourceforge.net/scripts/script.php?script_id=182

Vous pouvez ainsi faire toutes vos complétions avec la touche tabulation.

Et sinon, dans le lien de philpep-tlse, l'utilisation de ctags est mentionnée, mais pas celle de exuberant-ctags.
Si vous installez ce paquet, il y a peu de langages qui ne seront plus reconnus :cool:
Asm Asp Awk Basic BETA C C++ C# Cobol Eiffel Erlang Fortran HTML Java JavaScript Lisp Lua Make Pascal Perl PHP Python REXX Ruby Scheme Sh SLang SML SQL Tcl Vera Verilog Vim YACC
Malheureusement, Ada fait partie des peu de langages qui ne sont pas reconnus...
Transfuge désormais sous Gentoo
Gentooïste et adaïste : tu cumules 😛

EDIT : sinon, un petit tour sur vim.org et tu tombes sur ada.vim
Ce plugin a l'air intéressant ; il faudra que je l'essaye.
Merci