J'aimerais savoir s'il existe un moyen de faire en sorte que Vim se comporte comme tel tail -f
.
Même le meilleur plugin Vim que j'ai trouvé jusqu'à présent ne fait pas ce que j'attendais.
Je veux vraiment voir le fichier mettre à jour en temps réel . Même si je suis loin du clavier, je veux que Vim recharge constamment le tampon et passe à la dernière ligne.
Comment faire ça?
(Je ne veux pas recharger tout le fichier car certains fichiers journaux sont très volumineux. Le mieux est de ne charger que les dernières lignes, comme le tail -f
fait le cas.)
vim
? Quel est le problème avectail -f
?less +F
au lieu detail -f
. Ne vous donne pas la coloration syntaxique cependant.Réponses:
Vous ne pouvez pas faire
vim
se comporter commetail -f
. Vous pouvez faireless
se comporter comme une combinaison devim
ettail -f
bien.En avant pour toujours (suivre) le mode
less
a un mode de transmission avant éternel que vous pouvez entrer en appuyant sur Fou en lui passant+F
comme argument.Dans ce mode, il
less
se comporte commetail -f
s'il n'arrêtait pas de lire lorsqu'il atteint la fin d'un fichier. Il actualise en permanence avec les nouvelles données du fichier. Pour quitter ce mode, appuyez sur Ctrlc.Mise en évidence de la syntaxe
less
prend en charge le filtrage automatique des données lues. Il existe un programme appelé source-highlight qui peut effectuer une surbrillance de base du code source. Il vient avec un script qui fonctionne bien avecless
. Pour l'utiliser, il suffit de définir laLESSOPEN
variable d'environnement de manière appropriée.Vous devez également dire
less
de transmettre les séquences d'échappement brutes du terminal (celles-ci indiquent à votre terminal comment colorer le texte) en lui passant le-R
drapeau. Vous pouvez direless
de prétendre que le-R
drapeau est toujours passé en définissant laLESS
variable d'environnement.Quand
less
n'est pas assezBien que
less
que ses raccourcis clavier soient similaires à ceux de vi, ce n'est tout simplement pas la même chose que Vim. Parfois, cela semble étranger et il manque des fonctionnalités importantes telles que l'intégration des ctags et la possibilité de modifier du texte.Vous pouvez
less
appeler Vim (en supposantEDITOR=vim
) sur le fichier en cours de visualisation en appuyant sur v.less
mettra même votre curseur au bon endroit dans Vim. Lorsque vous quitterez Vim, vous vous retrouverez àless
. Si vous avez apporté des modifications au fichier alors que vous étiez dans Vim, elles seront reflétées dansless
.la source
Maintenant, dans un autre shell (comme bash), vous pouvez faire:
Où <C -> <CN> oblige vim à passer en mode normal, "edit!" indique à vim de recharger le fichier actuel (le CR simule une pression sur Entrée), et G va au bas du fichier. Le retrait de (G) facilite l’insertion du fichier pendant l’entrée des données.
la source
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Feb 10 2013 02:28:47) Option inconnue: "--servername=toto" Plus d'info avec: "vim -h"
J'ai trouvé la réponse grâce au commentaire de Evan Teitelman . Ma solution est inspirée de /usr/share/vim/vimcurrent/macros/less.vim .
J'ai créé ma propre fonction, mais cela pourrait être beaucoup amélioré.
Et appuyez simplement sur CTRL + C pour quitter Tailf.
Pour ouvrir un fichier journal en mode Tailf:
view -M "+call Tailf()" /path/to/logfile.log
Ce que je n’aime pas, c’est l’
sleep
appel, qui ne permet de rien faire dans vim pendant l’actualisation automatique. Le mieux serait que le tampon soit autonome et qu'il mette à jour même si je suis dans une autre fenêtre partagée. Quoi qu'il en soit, c'est un bon début. :)la source
:read
qui attend que le fichier ait été modifié et, s'il a été ajouté, se lit dans les lignes au bas du fichier.Une méthode non récursive pour la même chose:
la source
J'aime ça court et sans beaucoup de piratage. Vous pouvez exécuter cet oneliner à partir de ex (dans vim) en cas de besoin (ou mettre chaque commande dans vimrc, lorsque les fichiers journaux sont ouverts.)
(si vous voulez sauter (presque) à la fin du fichier, utilisez simplement "G" au lieu de "lh" avec feedkeys)
Explication:
autoread
: lit le fichier lorsqu'il est modifié de l'extérieur (mais cela ne fonctionne pas tout seul, il n'y a pas de timer interne ou quelque chose comme ça. Il ne lira le fichier que lorsque vim fera une action, comme une commande dans ex:!
CursorHold * checktime
: lorsque le curseur n'est pas déplacé par l'utilisateur pendant le temps spécifié dansupdatetime
(ce qui correspond à 4000 millisecondes par défaut)checktime
est exécuté, ce qui permet de rechercher les modifications extérieures au fichier.call feedkeys("lh")
: le curseur est déplacé une fois, à droite et à gauche. et puis rien ne se passe (... ce qui signifie, celaCursorHold
se déclenche, ce qui signifie que nous avons une boucle )Pour arrêter le défilement lors de l’utilisation
call feedkeys("G")
, exécutez:set noautoread
- maintenant, vim dira que le fichier a été modifié et demandez si l’on veut lire les modifications ou non)J'aime l'idée de regarder les fichiers journaux dans vim (au lieu de tail -f), par exemple lorsque vous travaillez dans une session ssh sans screen / tmux. De plus, vous pouvez copier directement à partir du fichier journal, si nécessaire, ou enregistrer la sortie directement ou ... tout ce que vous pouvez faire avec vim :)
* de cette réponse (faisant référence à une réponse de PhanHaiQuang et à un commentaire de flukus )
la source
Edit: Je m'excuse, complètement passé outre que vous avez déjà essayé cela.
Vous pouvez essayer d'utiliser le paquet de queue plugin , je pense qu’il devrait faire ce que vous cherchez.
Pour installer, ouvrez tail-3.0.vba avec vim et exécutez:
Redémarrez et vous devriez être capable de mettre un fichier dans vim comme suit:
la source
SEULEMENT Pour VIM 8.0+, ils ont introduit des minuteries. Vous pouvez donc utiliser une minuterie pour simuler la fonction de queue, ce qui fonctionne assez bien selon mon expérience.
J'ai mappé la touche F6 pour activer la queue et la touche F7 pour la désactiver, vous pouvez personnaliser celles-ci dans les commandes ci-dessous, voir aussi la section ci-dessous pour les mots de prudence.
Exécutez le suivant
Vous pouvez également intégrer les commandes ci-dessus à vimrc afin de les conserver à tout moment.
Quelques mots de prudence:
la source
Depuis Vim, exécutez:
Cela suspendra Vim pendant que l’enfant renvoyé s’exécutera
tail -f
sur le tampon courant. Frapper Ctrl-Cvous ramène à la mémoire tampon dans Vim.la source
tail
faire le travail clairement . Vim est portable. Ce n'est pas.