Histórico recente de arquivos no Vim?


132

Gostaria de acessar os arquivos recentes que abri e fechei no GVim. Abro e fecho o GVim frequentemente. Eu gostaria de acessar arquivos recentes de sessões anteriores também.

O GVim armazena arquivos recentes em algum lugar como o Word e muitos outros aplicativos de desktop? Como acessá-los?


Respostas:


229

Pelo menos o terminal vim armazena os dez arquivos anteriores ~/.viminfona seção de marcas de arquivo . Você pode usar '0, '1, '2, ... '9para saltar entre eles.

(Provavelmente só é útil para '0voltar ao último arquivo que você estava editando, a menos que sua memória seja mais forte que a minha.)

Você também pode usar o :browse oldfilescomando para obter um menu com números.


2
Se você quiser usar 0- 9como marcas para a navegação, não marcá-los manualmente
yuan

16
use :browse oldobter lista de arquivos. e insira qpara escolher qual arquivo editar.
Songhir

5
:e #<1abre o último arquivo, veja :h c_#<.
Hotschke

: bro ol funciona .. mas você precisa digitar muitas teclas .. primeiro para obter uma lista de arquivos, depois pressionar q e depois selecionar um número. Acredito que o plug-in MRU mencionado abaixo seja muito melhor: stackoverflow.com/a/3171323/4752883, você deve pressionar <leader> f, depois procurar o arquivo com hjkl ou outras teclas / procurar o nome do arquivo. Em seguida, pressione o, digite, t ou v para abrir rapidamente o arquivo sob o cursor.
alpha_989

Recuperei um arquivo excluído por engano rmusando o método mencionado acima.
tandem

55

A melhor maneira que eu uso é

:browse oldfiles

A maneira mais fácil no vim.


1
Agradável! Mapeei essa expressão como "nmap bo: procure arquivos antigos <CR>" (sem as aspas) em meu ~ / .vimrc. Basta digitar o mapeamento (bo) em executa modo Normal esse comando
Victoria Stuart


22

Resposta muito tardia aqui ... expondo a resposta @sarnolds - Você pode visualizar o histórico do arquivo com o comando oldfiles @see: h oldfiles ou: h viminfo

:oldfiles 

Além disso, você pode ter um gerenciamento de arquivos refinado com visualizações e sessões ... @see: h mkview e: h mksession para detalhes ...


4
É útil saber como realmente abrir um arquivo depois que você souber o número da lista de :oldfiles. É possível fazer isso de forma interativa usando o :browsecomando, conforme explicado por @sarnold, mas também é possível fazer isso manualmente usando :e #<Nonde N é um número da oldfileslista.
precisa saber é o seguinte

11

Existe um canivete suíço de alternância de arquivos no plugin CtrlP , que também faz parte do janus distributive. Possui :CtrlPMRUcomando com pesquisa inteligente entre arquivos usados ​​recentemente.

Nota: CtrlP mantém sua própria lista dos arquivos usados ​​mais recentes em g:ctrlp_cache_dir."mru/cache.txt". Não está reutilizando viminfo ( set viminfo?) que contém uma lista de marcas de arquivo. Isso é útil se você deseja limpar esta lista.


1
A interface CtrlP não é intuitiva para usuários do vim? Não vale a pena aprender a interface complicada para fazer coisas simples, como encontrar o arquivo MRU = ~ / regexp / (feito facilmente com perl / grep regexp ~ / _viminfo).
Mosh

Sim. Estou tentando entender como usar o Ctrlp, mas o MRU parece ser muito mais fácil de usar, se você tiver um conjunto simples de arquivos ( stackoverflow.com/a/3171323/4752883 ). No MRU, você também pode fazer a pesquisa de regexp do VIM para encontrar o arquivo que você precisa ...
alpha_989 22/11

9

Use :bro ole pressione o número que corresponde ao arquivo que você deseja abrir.


5

O plug- in CtrlP permite pesquisar os arquivos usados ​​recentemente, bem como os arquivos no diretório atual, com este comando:

nnoremap <c-p> :CtrlPMixed<cr>

Isso evita que você tenha que lidar com comandos internos do Vim e com o plug-in MRU, nenhum dos quais permite a pesquisa de arquivos difusos, o que é essencial ao trabalhar em projetos maiores.


Para aqueles que são resistentes sobre re-Maping padrão de Ctrl-P funcionalmente: Pode-se abrir Ctrl-P normalmente e usar Ctrl-F ou Ctrl-B para alternar entre os modos (MRU sendo um deles)
Gustavo Matias


2

Como visto nos comentários aqui (http://stackoverflow.com/questions/571955/undo-close-tab-in-vim), seu arquivo provavelmente ainda está aberto em um buffer:

:ls " get the buffer number
:tabnew +Nbuf " where N is the buffer number

Por exemplo, você pode reabrir o terceiro buffer em uma nova guia (use: e se não usar guias):

:tabnew +3buf

1
Sim, isso funciona. Mas certamente o trabalho de um editor é facilitar as coisas? Se você precisar emitir um comando, identificar visualmente algo, lembre-se de um ID e, em seguida, emita outro comando que é uma perda real de tempo do usuário. Sua resposta está correta, e não me ofendo, mas isso não contribui para um dos principais recursos do Vim!
Artfulrobot

Eu tive o mesmo problema. você já tentou o buffexplorer? Combina sl e: tabnew + Nbuf. Agora você pode abrir a lista de buffers e abri-la em uma nova guia etc. com apenas um toque de tecla (o, t, v) etcc.
Alpha_989 22/11

2

Você pode acessar a lista na linha de comando com:

grep '^>' ~/.viminfo|cut -c3-|sed 's,~,'"$HOME"','

Explicação:

grep '^>' ~/.viminfo  #find the list of recent files
cut -c3-              #remove the first 2 characters
sed 's,~,'"$HOME"','  #replace ~ with absolute path

Você pode ter um alias do bash se o usar regularmente

alias vim_mru="grep '^>' ~/.viminfo|cut -c3-|sed 's,~,'\"$HOME\"','"

2

Adicionando meus 2 centavos aqui porque o fzf não foi mencionado anteriormente, o que é uma ferramenta maravilhosa: o
fzf.vim possui um :Historycomando que permite pesquisar os arquivos mais recentes de uma maneira difusa e pesquisar enquanto você digita .
Eu personalizo o comportamento (padrão) desse comando, não permitindo que o fzf reordene a lista de resultados da pesquisa para a melhor correspondência: desejo que a ordem de todos os nomes de arquivos correspondentes continue sendo a ordem em que esses arquivos foram usados ​​pela última vez.
Para realizar essa personalização, adicionei o seguinte no meu .vimrc para substituir o Historycomando padrão definido pelo plug-in fzf.vim:

    command! -bang -nargs=* History
      \ call fzf#vim#history({'options': '--no-sort'})

1

Mais um plugin que permite escolher o arquivo da lista dos que foram modificados pela última vez é staritfy . Ele substitui sua tela inicial por uma lista dos arquivos modificados mais recentemente. Você sempre pode abrir esta página posteriormente usando o :Startifycomando


1
Não foi possível instalar o startify - é necessário mais documentos sobre instalação e uso básicos. Usando o MRU, porque era fácil de instalar e usar.
Mosh

1

:ls para listar arquivos recentes com o número do buffer na coluna da esquerda.

Então faça :b{buffer-number}para pular lá.

Exemplo: :lsmostra a lista de arquivos. Quero pular para o terceiro último arquivo que visitei. :b3vai me levar lá.

Para uma pesquisa mais rápida, mapeie :lspara algo como, por exemplo, <Leader>.no seu arquivo .vimrc.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.