vim não está lembrando da última posição

73

Meu Ubuntu LTS 12.04 possui o editor vim. Se eu abrir um arquivo, passar para um parágrafo e reabrir o vim, o cursor vai para o início do arquivo sempre.

Este não é o comportamento esperado. Como o vim pode se lembrar da última posição lida depois de fechar um arquivo?

Eu tentei vi também, mas o resultado é o mesmo.

    
por Lunar Mushrooms 28.11.2012 / 14:07

6 respostas

93

Resolvido:

/ etc / vim / vimrc

Já contém recurso necessário. Só precisa descomentar:

" 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

(De fato, você pode se referir a /usr/share/vim/vim73/vimrc_example.vim também)

    
por Lunar Mushrooms 03.12.2012 / 10:08
56

Eu tive esse mesmo problema e descobri que o arquivo .viminfo no meu diretório pessoal tinha a propriedade errada. Foi possuído por raiz: raiz.

Depois de corrigir a propriedade do arquivo, alterando-o para mim mesmo, lembrando que a posição do arquivo começou a funcionar novamente

    
por TikiTavi 26.11.2013 / 16:36
5

Acho que esta postagem na wiki pode fornecer uma solução. Não acredito que restaurar a posição seja o comportamento esperado. link

    
por GaryBishop 28.11.2012 / 14:36
1

Existe um plugin chamado vim-lastplace (eu sou o autor) que irá abrir seus arquivos de onde você parou . Ele melhora as sugestões acima, ignorando as mensagens de confirmação, porque você normalmente está editando uma nova mensagem e deseja iniciar na parte superior do arquivo de mensagens de confirmação.

    
por Greg Dietsche 17.01.2016 / 04:20
0

No meu caso, o vi era um link simbólico: /usr/bin/vi -> /etc/alternatives/vi -> /usr/bin/vim.tiny . Este último não possui recursos reais de vim. Instalar o pacote 'vim' (usando synaptic ou apt-get) fez com que este symlink apontasse para /usr/bin/vim.basic , e isso resolveu o problema.

    
por Bruno Haible 11.02.2017 / 21:57
-1

Existe um erro na solução dos Cogumelos Lunares. Aqui a correção:

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
    
por Arnaud 29.09.2015 / 05:01

Tags