vim non ricorda l'ultima posizione

74

La mia Ubuntu LTS 12.04 ha l'editor di vim. Se apro un file, si passa a un paragrafo e si riapre vim, quindi il cursore va sempre all'inizio del file.

Questo non è il comportamento previsto. Come il vim può ricordare l'ultima posizione di lettura dopo aver chiuso un file?

Ho provato anche vi , ma il risultato è lo stesso.

    
posta Lunar Mushrooms 28.11.2012 - 14:07

6 risposte

94

Risolto:

/ etc / vim / vimrc

contiene già la funzionalità necessaria. Devi solo decommentarlo:

" Uncomment the following to have Vim jump to the last position when
" reopening a file
if has("autocmd")
  au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif

(Infatti, puoi anche fare riferimento a /usr/share/vim/vim73/vimrc_example.vim)

    
risposta data Lunar Mushrooms 03.12.2012 - 10:08
56

Ho avuto lo stesso problema e ho scoperto che il file .viminfo nella mia directory home aveva la proprietà sbagliata. Era di proprietà di root: root.

Una volta risolta la proprietà del file cambiandola a me stessa, ricordando che la posizione del file ha iniziato a funzionare di nuovo per me

    
risposta data TikiTavi 26.11.2013 - 16:36
5

Penso che questa pubblicazione wiki possa fornire una soluzione. Non credo che il ripristino della posizione sia il comportamento previsto. link

    
risposta data GaryBishop 28.11.2012 - 14:36
1

C'è un plugin chiamato vim-lastplace (sono l'autore) che aprirà i tuoi file dove hai lasciato . Migliora i suggerimenti di cui sopra ignorando i messaggi di commit perché in genere si modifica un nuovo messaggio e si desidera iniziare nella parte superiore del file del messaggio di commit.

    
risposta data Greg Dietsche 17.01.2016 - 04:20
0

Nel mio caso, vi era un link simbolico: /usr/bin/vi -> /etc/alternatives/vi -> /usr/bin/vim.tiny . Quest'ultimo non ha caratteristiche vim reali. L'installazione del pacchetto 'vim' (usando synaptic o apt-get) ha reso questo punto di collegamento simbolico a /usr/bin/vim.basic , e questo ha risolto il problema.

    
risposta data Bruno Haible 11.02.2017 - 21:57
-1

C'è un errore nella soluzione Lunar Mushrooms. Ecco la correzione:

if has("autocmd")
  " When editing a file, always jump to the last known cursor position.
  " Don't do it when the position is invalid or when inside an event handler
  " (happens when dropping a file on gvim).
  " Also don't do it when the mark is in the first line, that is the default
  " position when opening a file.
  autocmd BufReadPost *
    \ if line("'\"") > 1 && line("'\"") <= line("$") |
    \   exe "normal! g'\"" |
    \ endif

endif
    
risposta data Arnaud 29.09.2015 - 05:01

Leggi altre domande sui tag