No vim, como faço para abrir um arquivo no mesmo número de linha que o fechei na última vez?

141

Quero configurar o vim para abrir um arquivo no mesmo local em que parei.


fonte
: '"apóstrofo seguido de aspas duplas redireciona a última linha de alterações
Dhiren Hamal

Respostas:

195

Do /etc/vim/vimrcarquivo do Ubuntu , este exemplo é comentado:

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

Se isso não funcionar, um problema comum é não ter propriedade do seu ~/.viminfoarquivo. Se for esse o caso, execute:

sudo chown user:group ~/.viminfo

onde o usuário é seu usernamee groupgeralmente é o mesmo que seu nome de usuário.

moinudin
fonte
9
O autocmd sai diretamente do vim doc. Veja: help last-position-jump
user55400
19
Se a aspas simples na penúltima linha for alterada para um backtick, ela passará para a posição real do cursor, não apenas para o início dessa linha:\| exe "normal! g`\"" | endif
u2622
4
A chownparte resolveu o problema para mim. Tiremos o chapéu!
precisa saber é o seguinte
2
Finalmente, alguém aponta que meu .viminfo é de propriedade da raiz por algum motivo! Isso precisa estar nas outras 100 documentações que eu li.
29415 Jack
2
Só quero marcar a chown user ~/.viminfoadição com +1 . Estou tentando descobrir isso há uma hora e você acabou de salvar meu dia.
Christopher Reid
48

Se você não se importa com a automação de negociação por simplicidade, basta pressionar a tecla '"(apóstrofo, seguido de aspas duplas) ao abrir um arquivo, você vai pular para onde estava. Isto é essencialmente o que a resposta da @ marcog está fazendo.

sykora
fonte
24
  :h views-sessions

Você pode colocar isso no seu .vimrc :

  au BufWinLeave * mkview
  au BufWinEnter * silent loadview

as visualizações serão colocadas em $ HOME / .vim / view. Você provavelmente precisará criar esses diretórios.

Oli
fonte
Eu gosto desta resposta porque a outra se refere a um arquivo / etc / vim / que não existia no meu Mac.
MarkHu
15

Você pode iniciar o vim sem especificar um nome de arquivo usando

vim 

Em seguida, pressione CTRL + O duas vezes para ir para o último local em qualquer arquivo em que você trabalhou.

MatAff
fonte
Se você tiver o NERDTree instalado, pressionar Co duas vezes pode abrir o NERDTree no buffer atual. No meu caso, às vezes preciso pressionar Co até cinco vezes, mas eventualmente recebo o efeito descrito por @MatAff.
ashrasmun
Pressionar Ctrl-cuma vez é suficiente para mim. Além disso, pressionar Ctrl-cmais leva-me ainda mais para trás na histroy da posição do cursor (mesmo abrindo arquivos não abertos relevantes). Eu uso o Neovim 0.4.2, mas meu entendimento é que ele também se aplica vim.
T_T
7

Se você tiver o viminfo ativado, é tão simples como `0ir para a última posição do arquivo editado. Você notará que este é apenas um comando 'ir para marcar';

Na verdade, você pode mais tarde fazer '3 de ir para o terceiro local editado anterior (talvez em outro arquivo), e depois voltar para o último com `0novamente

Dê uma olhada em

 :marks

para ver locais lembrados. Observe também que o viminfo armazena todos os tipos de outras coisas (como o conteúdo de registros, marcas por arquivo, comando e histórico de pesquisa). A maioria das pessoas tem isso ativado por razões óbvias

ver
fonte
`0 não funciona para mim no vim versão 7.4.1689 no mac. Mas '0 faz o truque. Isso é um erro de digitação na resposta?
Alamoot # 17/17
@alamoot não, não é, veja vimdoc motion.txt - Verifique qual caractere sua `chave realmente gera, ou faça:verbose map `
veja
você está certo. De acordo com o vimdoc, ambos estão corretos!
Alamoot # 17/17
6

Existe um plugin chamado vim-lastplace (eu sou o autor) que abrirá seus arquivos de onde você parou. Ele aprimora 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.

Greg Dietsche
fonte
tudo o que você pode fazer sem plug-ins é o melhor. apontar para Vimrc: quanto menor for o código o mais leve e mais rápido
nilon
1

Às vezes, ~/.viminfotorna-se somente leitura ou seu usuário não tem acesso ao arquivo. Isso também pode ser um motivo pelo qual o vim não armazena a posição do cursor quando você fecha o arquivo.

dam0055
fonte