À l'aide de l'éditeur vim, une tâche courante consiste à parcourir les tampons. J'utilise maintenant des commandes standard comme :ls
ou a :bnext
. En fait, je mets dans mon .vimrc:
"move amongs buffers with CTRL
map <C-J> :bnext<CR>
map <C-K> :bprev<CR>
Je voudrais parcourir les tampons sous forme de liste dans la fenêtre quickfix, de la manière simple (= excellente) que le plugin MRU implémente.
Existe-t-il un plugin aussi simple que MRU mais agissant sur des tampons?
OK, une solution possible pourrait être d'utiliser la :CtrlpBuffers
commande, qui fait partie du plugin Ctrlp mais je ne suis pas un grand fan de Ctrlp, parce que parfois j'ai des beahviours étranges que je ne comprends pas complètement (les sélections en mode flou ...); donc je cherche quelque chose de vraiment simple comme plugin MRU.
BTW, j'ai plaisanté avec la :cexpr {expr}
commande, essayant de remplir les fenêtres quickfix avec le contenu de la :buffers
liste, sans succès (peut-être parce que mes programmes de programmation ignorés)
Toute suggestion ?
:bnext
au lieu de:cnext
?Réponses:
Vous pouvez remplir la liste des correctifs rapides avec chaque tampon comme ceci:
setqflist()
prend une liste d'éléments du dictionnaire décrivant chaque erreur (nom de fichier, numéro de ligne, position, etc.). Dans ce cas, nous spécifions un ensemble minimal d'informations: le numéro de tamponmap()
prend une liste et une expression (une chaîne) et renvoie une nouvelle liste de l'expression appliquée à chaque élément de la liste d'entrée. Ici, nous prenons une liste des numéros de tampons répertoriés et les formatez pour les utiliser danssetqflist()
('{"bufnr": v:val}'
, oùv:val
est la valeur de l'élément dans la liste)filter()
filtre une liste, supprimant les éléments qui ne satisfont pas une expression donnée. Ici, l'expression estbuflisted(v:val)
, ce qui signifie que le numéro de tampon existe et est répertorié, c'est-à-dire qu'il apparaît dans la:ls
sortierange(a, b)
génère une liste de nombres dea
àb
bufnr()
renvoie le numéro d'un nom de tampon donné. Si l'argument est'$'
, il renvoie le numéro de tampon le plus élevéC'est beaucoup à taper et pas très mémorable, vous pouvez donc l'encapsuler dans une commande dans votre vimrc:
Maintenant, vous pouvez simplement utiliser
:Qbuffers
pour remplir la liste des correctifs.Si vous souhaitez que cela soit mis à jour automatiquement à mesure que de nouveaux tampons sont ajoutés, vous pouvez faire quelque chose comme ceci:
Je ne recommanderais pas cela, cependant, car cela rendra la liste des correctifs assez inutilisable pour des choses comme
:make
ou:grep
.la source
Vous devriez essayer ce mappage:
À l'invite, tapez le numéro de tampon souhaité et appuyez sur Entrée.
la source
Jetez un œil au plugin bufexplorer . Il ouvre une liste consultable de tous les tampons dans une barre latérale, similaire au plug-in MRU mentionné. En outre, il existe plusieurs autres plugins de ce type sur vim.org .
PS: Vous avez posé la même question sur Stack Overflow ; veuillez ne pas soumettre la même question à plusieurs sites en parallèle!
la source