2010-10-18 5 views
0

J'ai lu beaucoup de questions ici sur vim. Je ne peux pas trouver quelque chose que je veux faire avec vim mais je suis sûr que c'est possible. J'aime les vim (je suis encore nouveau) en utilisant les onglets et j'ai ajusté ma vimrc de sorte que les touches H me font aller et venir entre les onglets. J'espérais trouver un moyen de pouvoir utiliser les commandes de tabulation pour ouvrir un onglet en sortie, de sorte que si j'écris quelque chose dans mon cas Ruby et que je veux le tester, je pourrais le lancer et le retourner un nouvel onglet avec la sortie. Ou basculez un onglet vers une console interactive pour tester le code. C'est possible? En outre, il est possible d'étendre les onglets aux vues, donc si j'avais deux onglets ouverts, disons script et sortie je pourrais: spx ou similaire et avoir des onglets pour diviser l'écran.Vim Question concernant les vues

Répondre

0

Vous pouvez charger la sortie ruby ​​dans une fenêtre vim de plusieurs manières.Un moyen serait d'ouvrir une nouvelle fenêtre divisée, puis charger sortie de la commande:

" vimscript command to open new split window 
wincmd n 
" run ruby command and insert output at line 1 
1,1!ruby foo.rb 

vous pourriez aussi obtenir voir la sortie sur un nouvel onglet avec une seule fenêtre:

tabnew 
1,1!ruby foo.rb 
+0

J'ai un problème avec le format 1,1! Ruby foo.rb. J'ai un simple programme ruby ​​que je testais avec le nom name.rb. name.rb s'exécute correctement à partir de la ligne de commande. met 'quel est votre prénom?' fname = gets.chomp met 'quel est votre deuxième prénom?' mname = gets.chomp met 'quel est votre nom de famille?' sname = gets.chomp nom_fichiers = nom.longueur.to_i + nom.longueur.to_i + sname.length.to_i met 'saviez-vous que votre nom contient' + numnames.to_s + 'caractères' sleep (30) Cependant, si je cours ceci: 1,1! Ruby.rb name.rb – sayth

+0

Je reçois cette erreur dans vim name.rb: 2: dans '

': méthode non définie' chomp' pour nil: NilClass (NoMethodError) Quel est votre prénom? – sayth

0

Je sais que ce n'est pas la réponse que vous voulez, mais utilisez des tampons et fossé les onglets. J'ai un screencast sur comment utiliser splits pour gérer votre fenêtre.

http://lococast.net/archives/111

En ce qui concerne la sortie de rubis, qui semble comme il pourrait être couvert ici:

https://superuser.com/questions/133886/vim-displaying-code-output-in-a-new-window-a-la-textmate

+0

ne suis pas sûr des OP situation particulière, mais c'est une erreur de toujours ignorer les onglets en faveur des scissions. Les divisions au sein d'une instance Vim sont analogues aux fenêtres d'un bureau; Les onglets sont analogues à plusieurs bureaux. En outre, les divisions ne fonctionnent parfois pas bien. Par exemple, j'ai des fichiers avec des plis de foldexpr complexes qui peuvent prendre plusieurs secondes pour s'ouvrir dans une division - même si le tampon est déjà chargé. Si je garde les tampons ouverts sur des onglets séparés, ils sont immédiatement accessibles; si j'essaie de les charger en cas de besoin, j'ai une période d'attente à chaque fois. Les splits, les onglets sont complémentaires, pas non plus/ou. –

+0

http://superuser.com/questions/133886/vim-displaying-code-output-in-a-new-window-a-la-textmate. – sayth

+0

o à partir de ce fil. pour déployer la sortie. :! ruby ​​foo.rb> foo.out & puis: e foo.out .Est-ce qu'il y aurait un moyen d'assigner cette action comme foo reste le même (comme le fichier serait déjà enregistré pour la coloration syntaxique) à une seule touche dire Alt + z? Je vais jeter un oeil à votre screencast rapidement :-) – sayth

0

En réponse à votre question sur l'ouverture d'un onglet en sortie, je ne pense qu'il y a construit de manière à le faire. Il ya le RunView plugin (voir mes réponses à this question et this one), mais je ne pense pas qu'il supporte l'utilisation d'un onglet séparé (cela fonctionne avec une fenêtre fractionnée: à quoi je pense que vous vous référez quand vous dites 'view'). En ce qui concerne une console interactive: non, ce n'est pas possible. Voir :help design-not. Comme pour l'utilisation générale de Vim, essayez de vous habituer à l'idée de tampons et au fait que chaque 'vue' (mon terme), que ce soit une fenêtre fractionnée, un onglet ou autre n'est qu'un moyen de regarder à un tampon particulier. Vous pouvez avoir plusieurs vues sur un seul tampon, de sorte que vous pouvez avoir un fichier source divisé verticalement avec deux en-têtes dans un onglet et le même fichier source divisé verticalement avec un autre en-tête et un autre bit du même fichier source dans un autre onglet. C'est très puissant une fois que vous vous y êtes habitué. Les raccourcis clavier Ctrl-W sont vos amis (par exemple Ctrl-W, h pour aller à gauche une fenêtre). En ce qui concerne le changement d'un onglet en une fenêtre fractionnée, je ne pense pas qu'il existe un moyen direct de le faire (comment Vim pourrait-il savoir quels onglets vous voulez rejoindre?). Vous pouvez diviser un split en un onglet avec Ctrl-W + T, mais pour revenir en arrière, vous devrez créer quelques mappings. Ceci est du haut de ma tête, mais quelque chose comme ça pourrait fonctionner:

command! TakeThis let takebufnr = bufnr("")<CR> 
command! SplitTaken exe 'split #' . takebufnr<CR> 
nmap ,t :TakeThis<CR> 
nmap ,s :SplitTaken<CR> 

Appuyez ensuite ,t sur le tampon que vous voulez saisir et ,s sur celui que vous voulez partager avec le tampon « prise ».

+0

En ce qui concerne la «console interactive», la réalité peut être un peu différente de ce que vous suggérez. S'il est vrai que Vim ne peut pas réaliser l'intégration possible avec, disons, Emacs, il est certainement possible d'utiliser Vim pour interagir de manière utile. Voir., Par exemple, le plugin Vicle (http://www.vim.org/scripts/script.php?script_id=2551) ou le plugin VimDebug qui fournit une certaine intégration avec le débogueur Ruby (http: //www.vim. org/scripts/script.php? script_id = 663). Je ne peux pas me porter garant de l'un ou de l'autre en particulier, mais Vim est définitivement capable d'atteindre un niveau d'interaction utile. –