Pages : 1
#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
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
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
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
2) tu fait "." pour répéter la commande précédante ça réindente le même bloc
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
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
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 .
Voila avec ça je pense que j'aurai déjà égalé tout ce que je faisait avec codeblocks en une journée (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 )
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
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
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.)
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
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
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
Pages : 1