Le code suivant est à l'intérieur de mon J'aime vraiment cette fonctionnalité et Voulez-vous laisser allumé, sauf pour un fichier em>: 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). P> Il y a donc une possibilité de modifier le script ci-dessus pour exclure le fichier .vimrc code> et restaure généralement la dernière position du curseur d'un fichier que j'ai ouvert avec VIM: commit_editmsg code>? P> p>
6 Réponses :
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. p>
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 placer cela après le précédent et cela fonctionne juste bien :) p> p> 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 em> l'effet de la position restaurée, en le déplaçant simplement vers le haut plus tard em> encore. Donc je suis venu avec ceci: p> autocmd bubeadportPost code> 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 em> et utilise le gg code> pour déplacer le curseur en haut, écrasant essentiellement l'effet de l'autocmd d'origine. p>
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()
Nice raffinement - il semble plus propre qu'un double saut!
Essayez ceci, son curseur de déplacement vers la dernière position p>
Set caché p> blockQuote>
Placez les lignes suivantes au lieu de vos lignes dans le .vimrc code>:
J'ai dû utiliser silencieux! Code> pour empêcher Vim montrant une erreur lors de l'ouverture d'un fichier pour la première fois.
Ajout de ce qui suit à .vimrc a fonctionné pour moi: (de https://vim.fandom.com/wiki/always_start_on_first_line_of_git_commit_message ) p> p>
:-) Il m'a fallu moins de temps pour taper
ggi code> 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 :)