Lịch sử tập tin gần đây trong Vim?


132

Tôi muốn truy cập các tệp gần đây mà tôi đã mở và sau đó đóng trong GVim. Tôi mở và đóng GVim thường xuyên. Tôi cũng muốn truy cập các tập tin gần đây từ các phiên trước đó.

GVim có lưu trữ các tệp gần đây ở đâu đó dưới dạng Word và nhiều ứng dụng máy tính để bàn khác không? Làm thế nào để truy cập chúng?


Tương tự như câu hỏi: stackoverflow.com/questions/309723/ Cách
malgca

Câu trả lời:


229

Ít nhất terminal vim lưu trữ mười tệp trước đó vào ~/.viminfophần tên tệp. Bạn có thể sử dụng '0, '1, '2, ... '9để nhảy giữa chúng.

(Có lẽ chỉ hữu ích '0để quay lại tệp cuối cùng bạn đang chỉnh sửa, trừ khi bộ nhớ của bạn mạnh hơn của tôi.)

Bạn cũng có thể sử dụng :browse oldfileslệnh để có được một menu với các số.


2
Nếu bạn muốn sử dụng 0- 9làm dấu để điều hướng, đừng đánh dấu chúng theo cách thủ công
nhân dân tệ

16
sử dụng :browse oldnhận danh sách tập tin. và nhập qđể chọn tập tin cần chỉnh sửa.
songhir 6/214

5
:e #<1mở tập tin cuối cùng, xem :h c_#<.
Hotschke

: bro ol hoạt động .. nhưng bạn phải nhập rất nhiều khóa .. đầu tiên để có danh sách các tệp, sau đó nhấn q, sau đó chọn số. Tôi tin rằng plugin MRU được đề cập dưới đây tốt hơn nhiều: stackoverflow.com/a/3171323/4752883 bạn phải nhấn <Leader> f, sau đó duyệt đến tệp bằng hjkl hoặc các phím khác / tìm kiếm tên tệp. Sau đó nhấn o, enter, t hoặc v để mở nhanh tệp dưới con trỏ.
alpha_989

Tôi đã phục hồi một tập tin tôi xóa nhầm bằng rmcách sử dụng phương pháp đã nói ở trên.
song song

55

Cách tốt nhất mà tôi sử dụng là

:browse oldfiles

Cách dễ nhất trên vim.


1
Đẹp! Tôi đã ánh xạ biểu thức đó là "nmap bo: duyệt oldfiles <CR>" (không có trích dẫn) trong ~ / .vimrc của tôi. Chỉ cần gõ ánh xạ (bo) trong chế độ Bình thường sẽ thực thi lệnh đó
Victoria Stuart


22

Câu trả lời rất muộn ở đây ... giải thích về câu trả lời @sarnold - Bạn có thể xem lịch sử tập tin bằng lệnh oldfiles @see: h oldfiles hoặc: h viminfo

:oldfiles 

Hơn nữa, bạn có thể quản lý tập tin chi tiết với lượt xem và phiên ... @see: h mkview và: h mksession để biết chi tiết ...


4
Thật hữu ích khi biết cách thực sự mở một tệp sau khi bạn biết số đó từ danh sách :oldfiles. Người ta có thể thực hiện điều này một cách tương tác bằng cách sử dụng :browselệnh, như được giải thích bởi @sarnold nhưng cũng có thể thực hiện việc này bằng tay bằng cách sử dụng :e #<NN là một số trong oldfilesdanh sách.
Krzysztof Adamski

11

Có một con dao Thụy Sĩ của tập tin chuyển đổi plugin CtrlP , cũng là một phần của phân phối janus . Nó có :CtrlPMRUlệnh với tra cứu thông minh trong số các tập tin được sử dụng gần đây.

Lưu ý: CtrlP duy trì danh sách riêng của các tệp được sử dụng gần đây nhất trong g:ctrlp_cache_dir."mru/cache.txt". Nó không sử dụng lại viminfo ( set viminfo?) có chứa danh sách các dấu tệp. Điều này rất hữu ích nếu bạn muốn xóa danh sách này.


1
Giao diện CtrlP không trực quan cho người dùng vim? Không đáng để học giao diện phức tạp để làm điều đơn giản là tìm tệp MRU = ~ / regapi / (dễ dàng thực hiện với perl / grep regapi ~ / _viminfo).
mosh

Vâng .. Tôi đã cố gắng hiểu cách sử dụng Ctrlp, nhưng MRU dường như dễ sử dụng hơn nhiều, nếu bạn có một bộ tệp đơn giản ( stackoverflow.com/a/3171323/4752883 ). Trong MRU, bạn cũng có thể thực hiện tìm kiếm
regrec

9

Sử dụng :bro olsau đó nhấn số tương ứng với tệp bạn muốn mở.


5

Các CtrlP Plugin cho phép bạn tìm kiếm thông qua các file sử dụng gần đây cũng như các file trong thư mục hiện với lệnh này:

nnoremap <c-p> :CtrlPMixed<cr>

Điều này giúp bạn tránh khỏi những rắc rối khi phải xử lý các lệnh Vim tích hợp và plugin MRU, cả hai đều không cho phép bạn thực hiện tìm kiếm tệp mờ, điều này rất quan trọng khi làm việc trên các dự án lớn hơn.


Đối với những người chống lại việc lập bản đồ lại chức năng mặc định của Ctrl-P: Bạn có thể mở Ctrl-P bình thường và sử dụng Ctrl-F hoặc Ctrl-B để chuyển đổi giữa các chế độ (MRU là một trong số họ)
Gustavo Matias

4

MRU có rất nhiều tính năng như được giải thích ở đây: http : //www.thegeek ware.com/2009/08/vim-editor-how-to-setup- most -recently-used-document-tests-USEmru-plugin /


2

Như đã thấy trong các nhận xét ở đây (http://stackoverflow.com/questions/571955/undo-close-tab-in-vim), tệp của bạn có thể vẫn đang mở trong bộ đệm:

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

Ví dụ: bạn có thể mở lại bộ đệm thứ ba trong một tab mới (sử dụng: e thay vì nếu bạn không sử dụng các tab):

:tabnew +3buf

1
Vâng, điều này hoạt động. Nhưng chắc chắn công việc của một biên tập viên là làm cho mọi thứ dễ dàng? Nếu bạn phải đưa ra một lệnh, xác định trực quan một cái gì đó, hãy nhớ một Id, sau đó đưa ra một lệnh khác thực sự lãng phí thời gian của người dùng. Câu trả lời của bạn là chính xác, và tôi không có ý xúc phạm, nhưng nó không tạo ra một trong những tính năng giết người của Vim!
artfulrobot

Tôi đã từng gặp vấn đề tương tự. bạn đã thử dùng buffexplorer chưa? Nó kết hợp ls và: tabnew + Nbuf. Bây giờ bạn có thể mở danh sách bộ đệm và mở nó trong một tab mới, v.v. với một lần nhấn phím (o, t, v) vvc.
alpha_989

2

Bạn có thể truy cập danh sách từ dòng lệnh với:

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

Giải trình:

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

Bạn có thể có một bí danh bash nếu bạn sử dụng thường xuyên

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

2

Thêm 2 xu của tôi vào đây vì fzf không được đề cập trước đó, đây là một công cụ tuyệt vời:
fzf.vim có một :Historylệnh cho phép bạn tìm kiếm các tệp được sử dụng gần đây nhất trong mờtìm kiếm trong khi bạn gõ .
Tôi tùy chỉnh hành vi (mặc định) của lệnh này bằng cách không để fzf sắp xếp lại danh sách kết quả tìm kiếm sao cho phù hợp nhất: Tôi muốn thứ tự của tất cả các tên tệp phù hợp để giữ thứ tự các tệp này được sử dụng lần cuối.
Để thực hiện tùy chỉnh này, tôi đã thêm phần sau trong .vimrc của mình để ghi đè Historylệnh mặc định được xác định bởi plugin fzf.vim:

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

1

Một plugin nữa cho phép bạn chọn tệp từ danh sách các plugin đã sửa đổi cuối cùng là staritfy . Nó thay thế màn hình bắt đầu của bạn bằng một danh sách các tệp được sửa đổi gần đây nhất. Bạn luôn có thể mở trang này sau bằng cách sử dụng :Startifylệnh.


1
Thậm chí không thể bắt đầu cài đặt - cần thêm tài liệu về cài đặt và sử dụng cơ bản. Sử dụng MRU, vì nó dễ cài đặt và sử dụng.
mosh

1

:ls để liệt kê các tệp gần đây với số bộ đệm trên cột bên trái.

Sau đó làm :b{buffer-number}để nhảy ở đó.

Ví dụ: :lshiển thị danh sách các tập tin. Tôi muốn chuyển đến tập tin thứ ba mà tôi đã truy cập. :b3sẽ đưa tôi đến đó

Để tìm kiếm nhanh hơn, ánh xạ :lstới một cái gì đó, ví dụ như <Leader>.trong tệp .vimrc của bạn.


1

Ngoài ra, bạn có thể quay lại với ctrl+ O.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.