Khi ở chế độ chèn Vim, có cách nào để thêm tự động hoàn thành đường dẫn tệp không?


81

Tôi viết rất nhiều tập lệnh shell và tôi liên tục phải nhập vào các đường dẫn tệp. Tôi đang tự hỏi liệu có ai biết cách đưa Vim đến đường dẫn tệp tự động hoàn thành khi ở chế độ chèn hay không, giống như khi bạn đang ở trong tab trình bao yêu thích của mình để hoàn thành đường dẫn của thư mục hoặc tệp.

Thêm tín dụng nếu bạn có thể nhận được CTRLDchức năng của shell vào chế độ chèn Vim (nghĩa là để xem những tệp / thư mục nào trong đường dẫn hiện tại).


câu hỏi thú vị, tôi rất thích biết câu trả lời quá :)
Jay Zeng

@stephenmm Ctrl-D làm gì trong trình bao của bạn? Trong bash shell của tôi, nó không có tác dụng gì khi tôi nhập một số văn bản, nếu không thì đóng terminal.
alhelal

@alhelal - Có vẻ như CTRL-D sẽ hiển thị các tệp và thư mục trong một số shell cũ hơn của tôi. Tôi không thấy bất kỳ chức năng CTRL-D nào nữa.
stephenmm

Câu trả lời:


162

Để hoàn thành omni tên tệp , bạn có thể sử dụng:

Ctrl- XCtrl-F


11
Một khoảnh khắc vim aha .... Cảm ơn. Tôi vẫn không sử dụng tab ở chế độ chèn vì vậy đã thêm tab này vào .vimrc của tôi: imap <Tab> <CX> <CF>
stephenmm

4
Một cách sử dụng tốt khác cho <tab> trong chế độ chèn là <cn>. Thao tác này sẽ tự động điền từ bạn đang nhập dựa trên các từ khác trong tệp bạn đang làm việc. Tôi sử dụng nó mọi lúc khi nhập tên biến hoặc tên lớp.
Derek

Có cách nào ảnh hưởng đến đường tìm kiếm không? Khi thêm các mục nhập #include vào tệp C, các đường dẫn có thể không liên quan đến vị trí bạn đã mở tệp từ đó.
Rob Bradford

@RobBradford hãy dùng thử YouCompleteMe, nếu được cung cấp thông tin phù hợp (ví dụ: tôi sử dụng .ycm_extra_conf.py được tạo bởi YCM-Generator, sử dụng hệ thống xây dựng dựa trên cmake của tôi), nó sẽ tự động hoàn thành một cách độc đáo bất kỳ tên đường dẫn nào trong các thư mục bao gồm của bạn.
Emile Vrijdags

Vim không thể tự động hoàn thành khi có khoảng trắng trong tên tệp. Có cách nào để khắc phục điều đó không?
Jean


18

Để xây dựng trên @CMS và @michael câu trả lời xuất sắc

Khi sử dụng ctrl+ X ctrl+ fchuỗi lệnh nó sẽ hiển thị một danh sách các tập tin trong thư mục hiện hành. Tôi dành một phút để tìm phím phù hợp để di chuyển lên và xuống giữa các tên tệp khác nhau. Các phím chính xác là Ctrl-n và Ctrl-p. Bạn có thể sử dụng hầu hết các phím khác (như Space) để chọn và tiếp tục nhập.

Ngoài ra, nếu bạn chưa ở tệp / thư mục mà bạn muốn chèn, bạn có thể đi xuống cấu trúc cây tệp như sau:

  1. Tùy chọn nhập một số phần của thư mục. Bạn thậm chí có thể sử dụng ../../ví dụ!
  2. Nhấn ctrl+ X ctrl+ fvà chọn mục đầu tiên trong cây từ danh sách.
  3. Tiếp theo, nhấn ctrl+ flần nữa trong khi mục chính xác được đánh dấu để hiển thị danh sách cấp tiếp theo trong cấu trúc cây thư mục.

Bạn có thể tiếp tục làm điều này cho đến khi tìm thấy thư mục / tệp bạn muốn chèn vào tài liệu.


6
Trong bước 3, ý bạn là ctrl + x và ctrl + f? Vì chỉ ctrl + f không hoạt động với tôi, nó hoạt động giống như ctrl + n. Btw nó không hoạt động ở đây nếu một thư mục có khoảng trắng trong đó: /. bạn có biết cách giải quyết khác không?
Rojo

0

Tôi đã gặp vấn đề tương tự. Tôi đã tìm thấy giải pháp như:

    sudo apt-get install realpath

Và trong VIM điều hướng đến tệp ở loại chế độ bình thường:

    :r !realpath /path/to/file

Khi bạn đang điều hướng ở chế độ không chèn sau khi khớp lại, bạn có thể sử dụng nút chính của chúng tôi.

VOILA! TAB đang hoạt động trở lại!

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.