164

有没有办法查看你在 Vim 中打开的最近文档列表?我意识到我可以查看光标跳转列表,:ju然后转到列表中的光标位置,但这并不理想,因为列表中会有多个相同文档的列表。是否有另一个命令可以满足我的要求?

4

10 回答 10

234

不要使用插件,除非你想要一个漂亮的菜单。来自Vim 文档:开始(或:help old):

:ol[dfiles]

然后打开列出的文件之一,使用:'0, '1, '2, ...'9


列出文件中存储有标记的viminfo文件。

:bro[wse] ol[dfiles][!]

用 列出文件名:oldfiles,然后提示输入一个数字。当数字有效时,列表中的文件将被编辑。用于!放弃修改后的缓冲区。

于 2011-01-08T12:27:35.643 回答
31

最近使用 (MRU) 插件提供了对 Vim 中最近打开/编辑的文件列表的轻松访问。当您在 Vim 中打开/编辑文件时,该插件会自动存储文件名。

http://www.vim.org/scripts/script.php?script_id=521

于 2008-11-21T18:42:31.787 回答
25

此外:oldfilesfzf.vim:History.

于 2018-05-28T04:03:46.607 回答
18

启动 Vim 并按 Ctrl-oo 打开以前编辑的文件。继续按 o(同时仍按 Ctrl 键)以循环浏览较早的文件。见https://dev.to/jovica/3-little-known-but-useful-vim-tips-1pbg

于 2019-02-22T14:56:14.473 回答
2

vim 插件:minibufexpl可以帮助你。打开的文件列表显示在屏幕的顶部或底部:

在此处输入图像描述

在 vim 普通模式下,键入:b${bufid}跳转到第${bufid}_th缓冲区,例如:键入:b13跳转到第13个缓冲区,即。ngx_mail_ssl_module.c。

另外,您可以在 vimrc 中映射一些方便的绑定,例如:

" ------------------------------- minibufexpl mappings -----------------------------------
"let g:miniBufExplSplitBelow=1
nnoremap <silent> <leader>bn :bn<cr>
nnoremap <silent> <leader>bp :bp<cr>
nnoremap <silent> <leader>bf :bf<cr>
nnoremap <silent> <leader>bl :bl<cr>
nnoremap <silent> <leader>bt :TMiniBufExplorer<cr>

从这里获取插件:https ://github.com/fholgado/minibufexpl.vim

于 2017-11-30T03:05:24.793 回答
2

除了oldfiles有一个好东西叫做tinyMRU

Vim-tinyMRU 的唯一目的是提供一个直观的替代内置 :oldfile 命令。不多也不少。

这很简单:

https://github.com/romainl/vim-tinyMRU/blob/master/plugin/tinymru.vim

于 2018-01-11T00:26:59.587 回答
2

一个好的插件是https://github.com/Shougo/denite.nvim

您可以调用:Denite file_old以便对旧文件列表进行模糊搜索。特别是,只需点击Enter将重新打开上次打开的文件。为此分配快捷方式很有用:

nnoremap <leader>o :Denite<space>file_old<CR>

:browse oldfiles与, q, 1,相比,这节省了很少的击键次数Enter

于 2018-05-15T07:15:09.787 回答
0

我访问最近文件的最简单方法是将以下内容添加到一个人的 .gvimrc 文件中:

let g:netrw_sort_by           = 'time'

let g:netrw_sort_direction    = 'r'

这些行让 netrw 根据最近修改的文件对文件进行排序。然后一个简单的调用:e。并选择一个想要的文件。

此解决方案的前提是文件保存在 .gvimrc 中指定的一个主目录中。例如

cd ~/vim
于 2018-12-01T08:13:32.770 回答
0

没有直接的答案,但相关。

您可以定义aliases通过 vim 打开最后打开的文件:

alias vil='vim -c "normal! '\''0"' # open the last file
alias vil1='vim -c "normal! '\''1"'  # open the second last file ...
alias vil2='vim -c "normal! '\''2"'
于 2021-04-22T17:00:12.973 回答
0

:ol有效,但为什么不使用模糊搜索从一长串文件中快速获取完全匹配?

有一个非常方便的插件,ctrlp,它可以让你使用:CtrlPMRU,你可以快速得到你要找的东西。

多年来,ctrlp 是我为 vim 安装的第一件事!

https://github.com/ctrlpvim/ctrlp.vim

于 2021-12-22T06:43:19.657 回答