Tùy chọn 'đường dẫn' mặc định của Vim có thừa không?


10

Từ tài liệu trợ giúp của Vim (xem :help 'path':):

Chuỗi 'đường dẫn' (mặc định trên Unix: " .,/usr/include,,")

-Để tìm kiếm liên quan đến thư mục của tập tin hiện tại, sử dụng:

:set path=.

-Để tìm kiếm trong thư mục hiện tại, sử dụng một chuỗi trống giữa hai dấu phẩy:

:set path=,,

Có vẻ như .,,không có sự khác biệt trong tùy chọn 'đường dẫn'. Cả hai đều có nghĩa là thư mục hiện tại.

Tôi không thể hiểu tại sao chúng ta cần đặt cả hai .,,vào tùy chọn đường dẫn. Sự khác biệt giữa :set path=.và là :set path=,,gì?

Câu trả lời:


14

"Thư mục hiện tại" và "thư mục của tệp hiện tại" là hai thứ khác nhau.

"Thư mục hiện tại" theo mặc định là thư mục mà bạn đã khởi động Vim. Bạn hỏi Vim nó là gì với :pwdvà thay đổi nó với :cdhoặc :lcdhoặc bằng cách thiết lập các autochdirtùy chọn. Nếu bạn không bao giờ thay đổi nó, nó sẽ giữ nguyên cho đến khi bạn đóng phiên hiện tại.

"Thư mục của tập tin hiện tại" chính xác là những gì nó tuyên bố. Nếu tệp hiện tại nằm trong "thư mục hiện tại", cả hai đều có cùng giá trị. Nếu tệp hiện tại nằm trong một thư mục khác, chúng có các giá trị khác nhau.

Để pathcó ích, cần phải giải quyết hai tình huống đó với .,,.

Thí dụ:

$ cd /foo/bar/baz
$ vim filename
:pwd                   -->  /foo/bar/baz
:echo expand("%:p:h")  -->  /foo/bar/baz
:e ../file
:pwd                   -->  /foo/bar/baz
:echo expand("%:p:h")  -->  /foo/bar

7

Thư mục của tệp hiện tạithư mục hiện tại là hai thứ hoàn toàn khác nhau (đôi khi, có thể có cùng một giá trị).

Xem xét:

cd /tmp; vim /etc/bash.bashrc

Trừ khi tôi có autochdir(hoặc một cái gì đó tương tự) được đặt, thư mục hiện tại là /tmp, nhưng thư mục của tệp hiện tại là /etc.

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.