9
votes

Vim restaure la position du curseur; Exclure les fichiers spéciaux

Le code suivant est à l'intérieur de mon .vimrc et restaure généralement la dernière position du curseur d'un fichier que j'ai ouvert avec VIM: xxx

J'aime vraiment cette fonctionnalité et Voulez-vous laisser allumé, sauf pour un fichier : lors de la commution avec git, Vim est tiré et je peux éditer le message de validation avec elle. Toutefois, le fichier de nom de commit existe avant la démarrage de VIM (et est pré-rempli), de sorte que Vim le voit comme un fichier existant et restaure la dernière position du curseur (qui n'est généralement pas là que je voudrais commencer à taper).

Il y a donc une possibilité de modifier le script ci-dessus pour exclure le fichier commit_editmsg ?

vim

3 commentaires

:-) Il m'a fallu moins de temps pour taper ggi après que Git s'engage, en fait.


C'est une commande Vim d'aller au début d'un fichier et de passer en mode insertion :-)


Ah, je vois, bien c'est un début de résoudre ce problème ^^ Je vais essayer cela jusqu'à ce que je puisse résoudre ceci via le script :)


6 Réponses :


1
votes

Vous devriez probablement enquêter sur mksession. Vous pouvez configurer des commandes auto Vimenter / Vimleave pour "faire la bonne chose" lorsque vous avez des fichiers spécifiés sur la ligne de commande (comme lorsque Git invoque VIM). Il y a de nombreux scripts pour cette variété autour, voir http://vim.wikia.com/wiki/working_with_multiple_sessions < / a> par exemple.


0 commentaires

10
votes

Après avoir lu dans le manuel sur les commandes auto, j'ai remarqué qu'il ne semble pas ne pas être possible de définir le motif qu'ils correspondent de manière à exclure un schéma spécial. Et je n'ai pas non plus été capable d'utiliser une variable contenant le nom de fichier actuel, de sorte que je développe simplement l'existant si pour exclure le fichier.

Toutefois, sur la base du commentaire de Pavel Shved (sur le GG < / Code> Se déplacer vers le haut du fichier) Je pensais que de la même manière qu'il soit possible de simplement écraser l'effet de la position restaurée, en le déplaçant simplement vers le haut plus tard encore. Donc je suis venu avec ceci: xxx

placer cela après le précédent autocmd bubeadportPost simpl simplement l'exécution de l'événement, donc vim, après avoir exécuté le premier et Restaurer la position, le lit et le correspond sur le nom de fichier exclu et utilise le gg pour déplacer le curseur en haut, écrasant essentiellement l'effet de l'autocmd d'origine.

et cela fonctionne juste bien :)


0 commentaires

3
votes

Je comprends que vous avez déjà monté une solution, mais j'avais la même question et j'ai eu une alternative qui ne nécessite pas de chaînage.

function! PositionCursorFromViminfo()
  if !(bufname("%") =~ '\(COMMIT_EDITMSG\)') && line("'\"") > 1 && line("'\"") <= line("$")
    exe "normal! g`\""
  endif
endfunction
:au BufReadPost * call PositionCursorFromViminfo()


1 commentaires

Nice raffinement - il semble plus propre qu'un double saut!



0
votes

Essayez ceci, son curseur de déplacement vers la dernière position

Set caché


0 commentaires

0
votes

Placez les lignes suivantes au lieu de vos lignes dans le .vimrc : xxx


1 commentaires

J'ai dû utiliser silencieux! pour empêcher Vim montrant une erreur lors de l'ouverture d'un fichier pour la première fois.