Une façon de sélectionner un tampon dans vim pourrait consister à parcourir la liste des tampons, à l’aide de commandes standard :ls
, ou avec du code de plug-in / vimscript externe pour parcourir une liste dans une fenêtre .
Disons que je veux aller directement à un tampon, le plus rapidement possible.
Pour parcourir la liste des tampons en mode séquentiel, j'utilise maintenant des <C-J>
<C-K>
raccourcis, définis dans mon fichier .vimrc:
" move among buffers with CTRL
map <C-J> :bnext<CR>
map <C-K> :bprev<CR>
Une autre façon (accès direct) pourrait être de changer de numéro : en connaissant le numéro du tampon, il est possible de passer directement en entrant le numéro du tampon suivi de <C-^>
. Donc, si je veux passer à la mémoire tampon numéro 5, je voudrais appuyer sur 5<C-^>
.
Mais cela ne semble pas fonctionner pour moi (j'utilise vim 7.4 sur une boîte Ubuntu, à partir d'un invité Windows, avec un clavier italien ). J'imagine que c'est parce que le ^
caractère est dans la touche majuscule ^ì
du clavier italien, alors en fait ^
je dois appuyer surSHIFT-^
Des idées?
<c-6>
au lieu de<c-^>
?1<C-6>
au tampon numéro 1. Merci!Réponses:
La
:b
commande peut également prendre une sous - chaîne du nom du fichier du tampon vers lequel vous voulez vous rendre, ce qui est très pratique.Par exemple, si vous avez trois tampons
foo
,bar
etbaz
, puis:b bar
va basculer vers lebar
fichier.:b o
va basculer vers lefoo
fichier.:b a
vous donnera une erreur car cela pourrait signifier soitbar
oubaz
, mais vous pouvez corriger le nom pour qu'il soit plus spécifique, par exemple : ↑ r Enter.Cela peut être très utile, car cela signifie au lieu de
vous pouvez faire quelque chose comme
ce qui est beaucoup plus court et facile.
Cette commande peut également prendre un numéro, si vous voulez l'utiliser:
la source
:b
commande. Par exemple, si vous avez deux mémoires tamponspath/to/foo
etpath/to/tofu
, la commande:b f<Tab>
ne correspondra jamaispath/to/tofu
, car elle correspond au début d'un mot danspath/to/foo
.:5b
est légèrement plus courte alors:b 5
;-)C'est ce que j'utilise:
Appuyez maintenant pour
\b
afficher la liste des mémoires tampons disponibles et vous préparer:b
.Ensuite, vous pouvez simplement taper le numéro de la mémoire tampon et appuyer sur Entrée.
Ou vous pouvez taper une partie du nom de fichier et appuyer sur Entrée. (Cependant, j'appuie généralement sur Tab avant de frapper Entrée pour vérifier que j'ai le bon tampon. Sinon, je continue à pédaler avec Tab jusqu'à obtenir celui que je voulais.)
En fait, j'utilise une version légèrement modifiée de ce qui précède:
Cela empêchera l'
-- More --
invite d'apparaître lorsque vous aurez plus de tampons que de lignes disponibles pour les afficher.Mais si l'
'more'
option est toujours désactivée de toute façon, ce mappage va vraiment vous ennuyer, car il réactive l''more'
option après l'avoir faitls
!la source
[count]<C-^>
lorsque vous connaissez le numéro de la mémoire tampon, elle est plutôt utile lorsque vous ne le savez pas.[count]<C-6>
me semble que le moyen le plus rapide de passer à un tampon connu[count]<C-^>
ces jours-ci. Mais cela signifie que je dois exécuter MiniBufExplorer ou quelque chose de similaire pour savoir quels sont les numéros de mémoire tampon!:CtrlPBuffer
depuis le plugin CtrlP (4k ★)La principale caractéristique de ce plugin est de fournir une correspondance floue pour ouvrir facilement un tampon différent avec retour visuel.
Ouvrez la liste des mémoires tampons floues avec
:CtrlPBuffer
ou appuyez sur,<C-p>
puis sur<C-b>
pour changer le modebuffer
.Entrez un nombre de caractères suffisant pour spécifier le tampon à ouvrir.
Vous pouvez également utiliser
<C-j>
et<C-k>
pour parcourir la liste et sélectionner manuellement le tampon.Personnalisation
Si vous souhaitez ouvrir immédiatement la liste des tampons avec
<C-p>
, ajoutez la ligne suivante à votre vimrc:Vous pouvez utiliser
<C-f/b>
pour changer le mode de la fenêtre ctrlp.Je l'utilise personnellement
let g:ctrlp_cmd = 'CtrlPMRU'
. La liste la plus récemment utilisée (mru) contient également les tampons ouverts. Si vous utilisez différents modes ctrlp et souhaitez vous en tenir à votre dernier mode, vous pouvez définirlet g:ctrlp_cmd = 'CtrlPLastMode [--dir]'
.Plugins similaires
Il y a plus de plugins qui fournissent une liste de tampons avec une invite interactive avec correspondance fuzzy, par exemple
Le côté obscur contre le côté clair
(c.-à-d. configuration de vim par plugin lourde par rapport à la manière vim)
Avant de décider d'utiliser ces plugins plus complexes, étudiez les réponses de @Doorknob et @joeytwiddle . En particulier, cochez one-liner si l’un d’entre eux répond déjà à vos besoins.
nnoremap <Leader>b :b <C-d>
nnoremap <Leader>b :ls<Cr>:b<Space>
L'installation des plugins juste pour la commutation de mémoire tampon peut s'avérer un processus excessif. Voir aussi les remarques sur https://www.vi-improved.org/recommendations et l'article de Drew Neil 'Sur l'affûtage de la scie' .
la source
map <leader>a <ESC>:CtrlPBuffer<CR><CR>
pour sauter au tampon précédemment ouvert avec<leader>a
(alors que<leader>b
vient d'ouvrir la liste des tampons pour moi)<C-^>
(=<C-6>
)? voir:h CTRL-^
. Afaik, cela ne fait que ce que votre cartographie<leader>a
semble faire. Par conséquent, je pense que vous venez juste de donner un exemple de la raison pour laquelle les utilisateurs affirment que l’utilisation de plugins pourrait conduire à un utilisateur vim qui ne sait pas ce que vim peut déjà faire par lui-même.En plus des réponses très utiles de joeytwiddle et Doorknob, n'oubliez pas le
:b#
dernier tampon utilisé. Cela peut aussi être fait avec juste<C-^>
. Lorsque vous avez beaucoup de mémoires tampons et que vous passez constamment de l'une à l'autre, la mémoire tampon la plus récente est généralement la destination la plus courante.Personnellement, j'utilise une combinaison de plusieurs méthodes. Lorsque je travaille principalement avec deux mémoires tampons et que le reste est ouvert uniquement à titre de référence occasionnelle, j'ai tendance à basculer entre elles avec
:b#
ou<C-^>
. Lorsque je dois travailler avec plusieurs d’entre eux et changer plus souvent, j’utilise soit des chiffres (comme dans joeytwiddle tip), soit une partie de noms (comme dans Doorknob tip) avec TAB pour les compléter. Lorsque les noms sont déroutants et que de nombreux tampons sont ouverts (généralement plus de 10), j'utilise plus souvent le plug-in Ctrl-P ( https://github.com/kien/ctrlp.vim ). En deux frappes rapides, j'ai la liste des et je suis capable d’utiliser une puissante recherche floue pour trouver rapidement ce que je veux.la source
[b
et]b
du pluginvim-unimpaired
(> 2k ★)Si vous avez installé
vim-unimpaired
, vous pouvez utiliser[b
(:bp[revious]
) et]b
(:bn[ext]
)pour parcourir des tampons ouverts. Pas besoin de définir des correspondances plus précieuses pour les mêmes commandes. De plus, le saut vers le premier et le dernier tampon peut être effectué en
[B
(:bf[irst]
) et]B
(:bl[ast]
)Il y a beaucoup plus de correspondances entre crochets dans
vim-unimpaired
lesquelles vous pourriez trouver utile. Ils suivent tous le même schéma, ce qui facilite leur mémorisation.Le côté obscur contre le côté clair
Ce plugin peut être considéré comme léger et «vimish». Il est désigné par la communauté #vim comme un plugin "ne nuit pas".
la source
3[b
sauter trois tampons en arrière.Actuellement, j'utilise la touche
<Leader>
+number
pour basculer. La clé de chef est ma<space>
clé. J'utilise également vim-airline pour afficher le numéro de tampon en haut de la fenêtre.Bien que le nombre de commandes dépasse souvent 10, je modifie donc mon propre mappage. Si la
number
seule correspondance est sélectionnée, changez immédiatement de tampon, sinon attendez plus de chiffres ou de<space>
clés pour confirmer:Le code est collé d' ici
Par ailleurs, j'utilise aussi
<S-h>
et<S-l>
pour:bp
et:bn
, ou:tabp
et:tabn
si plusieurs onglets sont ouverts en ce moment. C'est assez intuitif pour moi.la source
Ces jours-ci, j’utilise
[buffer_number]<Ctrl-^>
pour changer de tampon car c’est très rapide.Mais comment connaître le numéro de tampon? J'utilise MiniBufExplorer pour pouvoir toujours voir les numéros de mémoire tampon en haut de Vim.
J'utilise également le mappage suivant, car il
<C-^>
est un peu difficile à atteindre avec une seule main.Sur une machine fraîche sans configuration, je retombe sur
:b [part_of_filename]<Tab><Enter>
la source