2010-04-13 5 views
0

La marque " dans Vim vous amène à la position de votre dernier curseur. Je veux créer un alias qui va ouvrir mon instance Vim et sauter à cette marque; quelque chose qui est évidemment extrêmement utile.Alias ​​Bash pour ouvrir Vim au dernier point de la position du curseur

Cela fonctionne à partir de la ligne de commande:

 
$ vim -c "'\"" File.cpp 

Maintenant, je veux faire un alias pour cela:

 
$ alias v='vim -c "'\""' 

Eh bien, ce ne va pas au travail! Vous devez échapper à la première citation que vous dites ...

 
$ alias v='vim -c "\'\""' 

Hmm. Ça n'a pas marché non plus ... Alors j'essaye beaucoup de variations de folie entre guillemets simples et doubles, je me casse la tête contre la table et charge le stackoverflow dans mon navigateur, et nous y voilà.

Comment puis-je échapper correctement cet alias?

Modifier

En fait il y a une meilleure façon de le faire :h last-position-jump.

Cette autocommande saute à la dernière position connue dans un fichier juste après l'ouverture, si la marque '" est définie:

 
:au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif 

+0

Cela ne se produit-il pas automatiquement? Chaque fois que j'ouvre un fichier, la position de départ est toujours à la position de ma dernière modification. – Ether

+0

Hmm. Peut-être y a-t-il dans votre vimčre un cadre magique que j'ignore. –

+1

En effet. Voir ': h last-position-jump'. –

Répondre

2

Cela semble tout à fait obscure, mais devrait fonctionner:

alias v='vim -c "'"'"'\""' 

C'est un guillemet simple vim -c ", suivi d'un double guillemet ', suivi d'un guillemet simple \"" ...

+0

Donc, vous êtes concaténant en fait 'vim -c' 'et' '' 'et' \ "" 'droite? Pouvez-vous aussi le faire avec l'échappement? – Tomas

+0

Pas joli, mais ça marche :) –

+0

@Tomas: Oui, c'est en train de faire En utilisant uniquement des arguments entre guillemets, la version échappée ressemblerait à ceci: 'alias v =" vim -c \ "'\\\" \ "" ' – sth

3

Votre question est un exemple d'une situation dans laquelle les fonctions sont supérieurs aux alias:

v() { vim -c "'\"" "[email protected]"; } 
+0

Vous devez envelopper le' $ @ 'entre guillemets (c'est-à-dire '" $ @ "') au cas où il y aurait des espaces dans l'un des noms de fichiers. – intuited

+0

@Dennis C'est un bon point. –

0

Une autre solution est GNU Screen. Il vous permet de sauvegarder une ou plusieurs instances de shell (où un ou plusieurs peuvent exécuter vim) et enregistre leur contenu exact comme si votre ordinateur était inactif. En particulier, il est parfait pour avoir de nombreux onglets et fichiers ouverts sur un ordinateur distant. Donc, au lieu de simplement aller à la dernière marque, vous tapez simplement screen -r mysession et vous restaurez non seulement la dernière position du curseur, mais aussi tous vos tampons/onglets/instances de shell/autres programmes et autres.

Mais peut-être le saviez-vous déjà.

Questions connexes