Câu hỏi Hoàn thành tên tệp Vim liên quan đến tệp hiện tại


Trong Vim, khi tôi đang ở chế độ chèn, và tôi muốn sử dụng hoàn thành tên tệp, tôi muốn đường dẫn tìm kiếm liên quan đến tệp hiện tại, không phải thư mục làm việc hiện tại. Ví dụ, nếu ở chế độ chèn, tôi gõ như sau:

./^ X^ F

Menu hoàn thành đang hiển thị cho tôi các tệp trong :pwd, nhưng tôi thà xem các tập tin trong %:p:h liệt kê.

Có một tùy chọn mà tôi có thể thiết lập để sửa lỗi này, và nếu không phải những gì bạn đề nghị như một workaround?


4
2018-06-05 17:16


gốc




Các câu trả lời:


nếu bạn

:set autochdir

bạn sẽ nhận được hành vi mà bạn mong muốn. Tuy nhiên, nếu bạn cần giữ thư mục hoạt động (ví dụ: để dễ dàng mở các tệp dự án khác), bạn phải lưu / khôi phục CWD bằng các autocmds:

:autocmd InsertEnter * let save_cwd = getcwd() | set autochdir
:autocmd InsertLeave * set noautochdir | execute 'cd' fnameescape(save_cwd)

11
2018-06-05 19:21



Cảm ơn bạn! autochdir thật tuyệt vời cho C-X, C-F, nhưng khó chịu khi tôi ở cấp độ 4 trong một dự án và tôi muốn :tabe - Mark K Cowan


@Ingo Karkat'S câu trả lời là tốt, nhưng tôi hơi do dự khi đặt nó vào vimrc của tôi, bởi vì ngay cả trang trợ giúp cho 'autochdir' cho một lưu ý rằng đó là số dặm sẽ phá vỡ một số plugin.

Tôi đã đưa ra giải pháp của riêng mình có thể rất phù hợp với các trường hợp sử dụng của tôi:

inoremap ./<C-X> <C-F>  <C-O>: lcd  %: p: h<CR><C-X> <C-F>

Tôi có kế hoạch giải nén nó ra thành một hàm và thiết lập một biến cho pwd trước khi lệnh lcs được ban hành và sau đó đặt lại nó tại một thời điểm nào đó. Nó sẽ được tốt đẹp nếu có một autocmd menu.

Tôi có thể hoặc không thể sử dụng điều này, nhưng tôi nghĩ tôi sẽ ném ra một giải pháp khác.


2
2018-06-06 13:27