web-dev-qa-db-fra.com

Permutation rapide des tampons en mode normal Vim

Récemment, j'ai découvert que j'étais "utiliser des onglets de manière incorrecte" dans Vim . J'essaie simplement d'utiliser des tampons dans Vim depuis, avec l'aide de MiniBufExplorer , mais je trouve cela douloureux en raison du nombre de frappes de touche nécessaires pour changer les tampons du mode normal. Avec des onglets, je peux juste faire gt ou gT aller et venir entre les onglets en mode normal, et je peux aussi faire NUMBERgt aller à un onglet spécifique.

Avec les tampons, je dois soit entrer en mode commande avec :bn, :bp, ou avec MiniBufExplorer, utiliser Ctrl + k ou Ctrl + Up pour monter dans la fenêtre tampon, faites défiler vers la gauche ou vers la droite avec h et l et ensuite frappé Enter pour sélectionner le tampon que je veux. Ou je peux faire quelque chose impliquant une séquence de leaders, mais cela nécessite toujours de retirer plusieurs doigts de la ligne d'arrivée. C'est une vraie douleur.

Comment puis-je obtenir quelque chose d’équivalent en mode normal pour changer de tampon en mode normal, pour pouvoir faire quelque chose comme: gn/gp pour :bn/:bp et NUMBERgn pour :buf NUMBER?

52
gotgenes

Ajoutez ceci à votre .vimrc

map gn :bn<cr>
map gp :bp<cr>
map Gd :bd<cr>  

Notez que vous remappez gp et Gd, mais peut-être que cela vous est égal (:help gp, :help Gd). 

Pour plus d'informations sur la façon de mapper les touches, voir :help map-overview et :help map.txt.

Btw, j'utilise personnellement <leader> au lieu de g dans le mappage. Mon <leader> est défini sur ;. Cela place ma clé <leader> sur la ligne de base, ce qui me permet de mapper toutes sortes de choses à l'aide de <leader>. :help mapleader si vous souhaitez modifier votre clé <leader>.

37
Eric Johnson

Pour changer de tampon, je choisis généralement d'utiliser la commande :buffer avec l'auto-complétion intégrée, par exemple. :b prof<Tab> pour passer à folder/path/LoginProfileFactory.php.

Vous pouvez simplement commencer à taper n’importe quelle partie du nom de fichier du tampon dont vous avez besoin, qui est Nice. 

Moins souvent, je me souviens réellement des nombres de tampons que je veux et j'utilise quelque chose comme :b 3 ou :3b. Je vois que vous dites que vous n'aimez pas :buf 3, donc Rumple Stiltskin a une alternative au :3b style que vous préférez peut-être.

34
Nick Knowlson

`Ctrl- ^ ' bascule vers le tampon numéroté.

28
Rumple Stiltskin

J'utilise le plugin unimpaired.vim

il définit les mappages [b et ]b qui permettent d'accéder aux tampons précédent et suivant de la liste.

Pour sauter pour un tampon spécifique, la meilleure option que je connaisse est celle que vous avez mentionnée: :b<number>

Si vous allez dans un autre tampon, vous pouvez revenir rapidement en tapant <c-^>

13
skeept

Ceci est basé sur réponse de Nick Knowlson , mais je voulais développer mon commentaire là-bas ...

Tapez :b <Tab> (notez l’espace), puis parcourez les tampons ouverts avec Tab ou  / .

... ce qui nous rapproche de la Ctrl + Tab dans tous les autres éditeurs et navigateurs que j'utilise.

En fait, c’est encore mieux à certains égards, vous pouvez ensuite aller en arrière avec  /  flèches. Il évite le pouce + doigt fu à taper Ctrl + Shift + Tab pour revenir en arrière dans les onglets des éditeurs et des navigateurs.

N.B. Shift + Tab fait juste la même chose que Tab

C'est en fait quelque chose comme Win + Tab sous Windows 10, où une fois que vous avez ouvert la fenêtre pour la première fois, vous pouvez vous déplacer à l’aide des touches de direction.

Edit : J'ai deux autres astuces que j'ai choisies pour utiliser des tampons:

  1. De cette réponse J'ai ceci dans mon .vimrc:

    nnoremap <leader>bb :buffers<cr>:b<space> 
    

    il ouvre la commande :ls/:buffers et précalcule le :b afin que vous n'ayez qu'à taper le numéro du tampon car vous verrez une liste avec tous les tampons et leurs numéros.

  2. J'ai aussi

    nnoremap <leader><tab> :b#<cr>
    

    qui bascule entre les tampons actuels et les tampons les plus récemment utilisés, revient un peu à faire cd - lors du basculement entre les répertoires

13
icc97

J'ai les lignes suivantes dans .vimrc:

nnoremap  <silent>   <tab>  :if &modifiable && !&readonly && &modified <CR> :write<CR> :endif<CR>:bnext<CR>
nnoremap  <silent> <s-tab>  :if &modifiable && !&readonly && &modified <CR> :write<CR> :endif<CR>:bprevious<CR>

Maintenant, un onglet vous permet d'aller au tampon suivant et un Shift-Tab au précédent.

12
Fritz G. Mehner

J'utilise LustyExplorer : J'ai appuyé sur <leader>b pour ouvrir une liste de mémoires tampons, puis quelques lettres du nom du tampon que je veux ouvrir, puis enter. Facile.

Mais vous n'utilisez pas les onglets de manière incorrecte, vous utilisez les onglets comme vous le souhaitez. Si cela a fonctionné pour vous, pourquoi ne pas désapprendre votre façon d'apprendre "de la bonne façon"?

6
romainl

Développer la réponse de Rumple Stiltskin , si vous savez que le fichier auquel vous voulez accéder est dans le tampon 4, par exemple, vous pouvez y arriver rapidement avec

4Ctrl-^

Sur mon clavier britannique, je peux réellement faire 4Ctrl-6, comme indiqué dans

:help CTRL-^

À propos, vous pouvez voir les numéros de mémoire tampon avec

:buffers
6
Robert

J'utilise F9 et F10 pour me déplacer entre le tampon précédent/suivant avec ce mappage:

map <F9> :bprevious<CR>
map <F10> :bnext<CR>

Pour moi, c’est le moyen le plus rapide de changer de tampon.

2
mvidovic

fzf.vim est un autre moyen rapide de modifier les tampons à l’aide de la correspondance floue. Ce plug-in est livré avec la commande par défaut:

:Buffers

qui ouvre la liste de tous les tampons ouverts similaires à: ls mais un tampon peut être recherché (fuzzy) et sélectionné. L’ouverture du tampon dans la fenêtre courante s’effectue par enter, mais peut également être ouverte dans un nouveau fractionnement (h ou v) ou un nouvel onglet utilisant respectivement ^ X ^ V ou ^ T.

À noter également:

:Lines

Ce qui permet de rechercher dans le contenu de tous les tampons ouverts. Cela peut être pratique si vous oubliez le nom d’un tampon, mais vous savez ce qu’il doit contenir.

2

Je pense que bufexplorer est un plugin agréable à utiliser. <leader>be fait apparaître un explorateur de tampon interactif qui répertorie tous les tampons ouverts. Vous pouvez rapidement parcourir la liste et Enter vous met dans le tampon sélectionné. À la différence de LustyExplorer, Ruby n’a aucune dépendance.

0
faham