Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/10/2007, à 13:53

crunchyy

Questions sur Vim

Bonjour,
je passe de codeblocks vers Vim je cherche quelques fonctionnalités,

1- Sur codeblocks y a un système d'abréviation du genre tu tappe "for" puis Ctr-J et il remplace for par

for(|; ; ;)
    ;

Ce qui est bien c'est que on peut en créer soit même, par exemple je tappe dans un fichier vide "cpp" puis Ctr-J et hop ca donne un fichier du genre

#include <iostream>

using namespace std;

int main(int argc, char* argv[])
{
    |
}

J'aimerai un truc équivalent si possible.

2- Quand je veux indenter un block je passe en mode visuel, je selectionne le block puis je tappe >> ou << mais des que je fais ça la sélection part. Peut on indenter en mode visuel?

3-Si possible pouvoir compiler le fichier courant depuis Vim.

C'est tout pour le moment merci.

Vim c'est :cool:


Même la perfection a un défaut. Celui de ne pas exister.

Hors ligne

#2 Le 25/10/2007, à 15:01

tshirtman

Re : Questions sur Vim

2) tu fait "." pour répéter la commande précédante ça réindente le même bloc smile

3) tu fait :make , ou si tu n'as pas encore de makefile :!gcc ... (le !lance ce qui suit dans un sous shell).

pour 1 je ne sais pas hmm

Dernière modification par tshirtman (Le 25/10/2007, à 15:02)

Hors ligne

#3 Le 25/10/2007, à 15:16

abetsic

Re : Questions sur Vim

Bonjour,

Pour les abréviations tu peux regarder du coté des... "abbreviation" dans vim (:help abbreviation) par exemple :

:abbr FOR for(;;;)<Esc>3hi

ou bien dans ton .vimrc des choses du genre (pris dans l'aide de vim)

autocmd BufEnter  *.c,*.h    abbr FOR for (i = 0; i < 3; ++i)<CR>{<CR>}<Esc>O

pour les template pareil :help template, un fichier à créer ~/.vim/skeleton.c et une ligne à ajouter dans ton ~/.vimrc :

autocmd BufNewFile *.c 0r ~/.vim/skeleton.c

T'as les idées et la syntaxe, maintenant tu peux t'éclater smile

Dernière modification par abetsic (Le 25/10/2007, à 15:17)

Hors ligne

#4 Le 25/10/2007, à 15:31

crunchyy

Re : Questions sur Vim

tshirtman a écrit :

2) tu fait "." pour répéter la commande précédante ça réindente le même bloc smile

Oui je connaissais mais pas pratique si on veut changer de sens. Je voudrais plutot savoir si on peut garder le texte en highlight et faire l'indentation.

Pour le reste je vais voir tout de suit.


Même la perfection a un défaut. Celui de ne pas exister.

Hors ligne

#5 Le 25/10/2007, à 16:02

trucutu

Re : Questions sur Vim

Pour les abbréviations de codes où les squelettes de fichiers, tu peux aussi regarder du côté du plugin c.vim


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#6 Le 25/10/2007, à 20:46

BlaireauOne

Re : Questions sur Vim

crunchyy a écrit :

Je voudrais plutot savoir si on peut garder le texte en highlight et faire l'indentation.

Pour remettre en "highlight" la même zone, tu tapes gv :

                        *gv* *v_gv* *reselect-Visual*
gv            Start Visual mode with the same area as the previous
            area and the same mode.
            In Visual mode the current and the previous Visual
            area are exchanged.
            After using "p" or "P" in Visual mode the text that
            was put will be selected.

Autre commande intéressante : o
bascule le curseur du début <--> fin du texte sélectionné
                            *v_o*
o            Go to Other end of highlighted text: The current
            cursor position becomes the start of the highlighted
            text and the cursor is moved to the other end of the
            highlighted text.  The highlighted area remains the
            same.

                            *v_O*
O            Go to Other end of highlighted text.  This is like
            "o", but in Visual block mode the cursor moves to the
            other corner in the same line.  When the corner is at
            a character that occupies more than one position on
            the screen (e.g., a <Tab>), the highlighted text may
            change.

Hors ligne

#7 Le 25/10/2007, à 20:57

crunchyy

Re : Questions sur Vim

trucutu a écrit :

Pour les abbréviations de codes où les squelettes de fichiers, tu peux aussi regarder du côté du plugin c.vim

Je préfère faire les modifs moi même plutot que d'installer des trucs que je ne comprends pas. Du moins pour le début. Après je passerai au monde merveilleux des plugins.

Sinon merci les gars pour vos réponses supra rapide. J'ai résolu mes trois problèmes (indentation, je me contente de ".", j'ai crée skeleton.cpp, et j'ai rajouté iab dans mon .vimrc). Donc ça c'est fait.


Maintenant y a encore des facilité que j'avais avec codeblocks que je n'ai pas, du genre :
1- Commenter/déscommenter une sélection. Je vois biens une astuce mais c'est franchement trops longs (passer en mode visuel par blocks (Ctr-V) sélectionner la premiere colonne appuyer sur 'I' tapper '//' puis ESC).

2- ça marche bien pour :!g++ source.cpp && ./a.out mais le problème c'est que c'est sur la même fenêtre (en bas de la fenêtre pour moi) donc impossible d'avoir les erreurs et le source en même temps. de plus c'est crevant (:D) a taper. le pieds ça serait d'avoir une genre de commande "comp"
qui enregistre le fichier courant le compile l'execute le tout sur un autre shell cool.

Voila avec ça je pense que j'aurai déjà égalé tout ce que je faisait avec codeblocks en une journée cool (En plus je viens de découvrir gf pour ouvrir le fichier sous le curseur et gd pour aller à la définition de la variable/fonction juste énorme cool)

Merci a vous.


Même la perfection a un défaut. Celui de ne pas exister.

Hors ligne

#8 Le 25/10/2007, à 21:14

tshirtman

Re : Questions sur Vim

Pour la compilo -> sinon tu bosse dans un screen, tu fait ctrl-a ctrl-a pour passer de vim a ton shell et vice versa. tu peut aussi couper ton screen en deux verticalement(ctrl-a, S, puis ctrl-a tab pour passer d'une partie à l'autre) , shell en bas et vim en haut (je ne crois pas qu'il y ais de comflits de raccourcis clavier, sinon il faudras changer ceux de screen).

pour commenter/décommenter je ne sais pas non plus et ça m'interresserais tongue

Hors ligne

#9 Le 25/10/2007, à 21:56

abetsic

Re : Questions sur Vim

Ah oui j'oubliais, pour l'indentation, tu peux le laisser faire tout seul en activant l'autoindent (:set ai).
Ou bien tu peux indenter la ligne ou selection en tapant =
Si tu veux commenter tout ton code :

gg=G

Hors ligne

#10 Le 25/10/2007, à 22:49

crunchyy

Re : Questions sur Vim

abetsic a écrit :

Ah oui j'oubliais, pour l'indentation, tu peux le laisser faire tout seul en activant l'autoindent (:set ai).
Ou bien tu peux indenter la ligne ou selection en tapant =
Si tu veux commenter tout ton code :

gg=G

j'ai essayé gg=G  et apparement ça ne fait qu'indenter le code.


Même la perfection a un défaut. Celui de ne pas exister.

Hors ligne

#11 Le 25/10/2007, à 23:28

tshirtman

Re : Questions sur Vim

j'ai une solution pour commenter toute la selection

:'<,'>s/^\(.*\)/\/\/\1

le début se met tout seul quand on fait ":" avec une sélection: le reste c'est une expression régulière qui seras appliqué a la sélection (on peut mettre % au lieu de '<,'> pour avoir tout le fichier)


quoi trop long a tapper? ^^'

Hors ligne

#12 Le 26/10/2007, à 00:07

tshirtman

Re : Questions sur Vim

avec les abreviations indiqués par abetsic, on peut définir:
:ca comment s/^\(.*\)/\/\/\1

du coup on peut commenter une ligne en tappant juste :comment
et un bloc de code en le sélectionnant puis
:'<,'>comment

(ce qui revient au même puisque les "'<,'>" sont ajouté automatiquement.)

big_smile reste plus qu'as ajouter ça dans le .vimrc et je pense qu'il doit être posible de changer la définition suivant le langage du ficher mais je ne sais pas faire lol

edit: reste un certains défaut tout de même, si on utilise comme moi highlightsearch tout le texte est surligné après execution de la commande, ça oblige a faire une recherche bidon (genre /bidon) pour y voir a nouveau quelque chose hmm

Dernière modification par tshirtman (Le 26/10/2007, à 00:13)

Hors ligne

#13 Le 26/10/2007, à 00:55

Luc Hermitte

Re : Questions sur Vim

1- Il existe quantité de (ft)plugins qui cherchent à répondre à la question.
<pub honteuse>
J'en maintiens une suite pour le C&C++.
C'est à base d'abbréviations, et beaucoup de trucs compliqués derrière (pour ne pas activer les abbréviations depuis commentaires/chaines ; utilisation de placeholders/markers ; ...).
C'est sûr que si tu veux tout réinventer, cela ne va pas t'aider, sinon c'est par là: http://hermitte.free.fr/vim/ressources/lh-cpp.tar.gz

NB: j'ai foiré le package (il faut récupérer word_tools.vim sous vimfiles/plugins ; et corriger une erreur stupide dans mu-template.vim)
</>

2- 'gv' pour resélectionner.
Mais tu as plein d'autres options beaucoup plus puissantes (:h object-select). Goute à la simplicité des '=i{'.

3- :h :make
Définit ton 'makeprg', et :make, :copen, :cnext, ....
Je m'étais amusé à encapsuler diverses choses à ce sujet avec lh-BTW.tar.gz (toujours au même endroit), à coupler avec local_vimrc.vim (pour avoir des .vimrc locaux à des hiérarchies). Mais c'est tout juste en phase alpha pour l'instant.

HTH

#14 Le 26/10/2007, à 00:58

Luc Hermitte

Re : Questions sur Vim

Pour ce qui est de commenter/décommenter.
NERD commenter semble être la mode.
Mais j'en suis resté au vénérable EnhancedCommentify qui fait tout ce dont j'ai besoin et bien plus encore.

#15 Le 01/11/2007, à 12:02

crunchyy

Re : Questions sur Vim

Bonjour,
Comment faire pour éviter de ne pas ajouter le skeleton.cpp aux fichiers qui finissent par *qt.cpp avec les commandes suivant :

autocmd BufNewFile *qt.cpp 0r ~/.vim/skeletonqt.cpp
autocmd BufNewFile *.cpp 0r ~/.vim/skeleton.cpp

Quand je crée un fichier example_qt.cpp j'ai les deux skeleton l'un sous l'autre (normale car ça repond a *qt.cpp et *.cpp) y'a pas une façon d'exclure les fichiers qui se terminent par qt.cpp de *.cpp?

Merci


Même la perfection a un défaut. Celui de ne pas exister.

Hors ligne

#16 Le 14/11/2007, à 22:03

crunchyy

Re : Questions sur Vim

Problème résolu!
Remplacer :

autocmd BufNewFile *.cpp 0r ~/.vim/skeleton.cpp

par :

autocmd BufNewFile *[^qt].cpp 0r ~/.vim/skeleton.cpp

Soit doit s'inspirer de la syntaxe lex.


Même la perfection a un défaut. Celui de ne pas exister.

Hors ligne