2017-11-08 1 views
1

auf einer neuen Installation von Ubuntu 16.04.3 LTS, habe ich Probleme mit vim springen bis zur letzten Position bei der Datei erneut öffnen. Aus irgendeinem Grund funktioniert die Marke '" nur, wenn ich sudo vim file mache, sonst nicht. Aus diesem Grund wird die folgende in meiner vimrc (/ etc/vim) nichts zu tunVim Letzte Positionsmarkierung Funktioniert nur mit Sudo

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

Aber diese Linie arbeitet mit sudo vi file gut? Ich bin jetzt seit ein paar Stunden hier und es stört mich wirklich. Dies funktioniert auch auf anderen Rechnern (ohne sudo) wie einem Mac, den ich habe.

+1

Was sagt 'ls -l ~/.viminfo'? – melpomene

+0

'-rw ------- 1 root root 3788 Nov 7 22:09/home/benutzername/.viminfo', und darin habe ich' set autoindent', was gut funktioniert – MacStation

+1

OK, Sie müssen diese Datei löschen , dann starte 'vim' (ohne' sudo'). – melpomene

Antwort

3

Die letzte Position in einer Datei wird in einer Marke gespeichert. Marken werden in ~/.viminfo gespeichert. Wenn Sie ein .viminfo in Ihrem Home-Verzeichnis besitzen, das einem anderen Benutzer gehört, kann Vim nicht zu es schreiben.

In Ihrem Fall hatten Sie eine ~/.viminfo im Besitz von root. Die Ausführung von sudo vim hat funktioniert, weil vim als root ausgeführt wurde, aber Ihr normaler Benutzer keine Berechtigungen zum Aktualisieren der Datei hatte.

Durch Löschen der Root-eigenen ~/.viminfo löschen Sie den Weg für vim, um die Datei beim nächsten Lauf neu zu erstellen, diesmal als normaler Benutzer.

+0

Keine Ahnung, wie das passiert ist, aber es funktioniert jetzt, also danke! – MacStation