Thực hiện: chỉnh sửa {file} sử dụng thư mục hiện tại trong: Khám phá


8

Tôi thường sử dụng :Exhoặc :Sexđể khám phá hệ thống tập tin từ một thư mục tệp đã mở hoặc chỉ cần gọi vim đi qua một thư mục để bắt đầu khám phá hệ thống tệp và sau đó mở tệp.

Trong mọi trường hợp, trong khi điều hướng cây thư mục, sử dụng :edit {file}lệnh để mở các tệp mới luôn có các đường dẫn liên quan đến thư mục hiện tại mà vim được thực thi; vì thế:

~# vim .
-> navigate to Development/
-> open a file
:e <tab> will complete path from home dir

hoặc là:

~# vim Development/
-> open a file
:Sex
:e <tab> will complete paths from Development/

có thể (tự động hoặc bằng lệnh) để thay đổi thư mục làm việc hiện tại của vim thành thư mục được chọn hiện tại trong khi điều hướng hệ thống tập tin?

Câu trả lời:


5

Có thể bằng cách đặt biến cấu hình netrw g:netrw_keepdirthành 0 (mặc định là 1).
Để làm cho nó vĩnh viễn, hãy thêm vào tệp .vimrc dòng này:

let g:netrw_keepdir=0

7

Có, vim có một :cdlệnh, trong đó in thư mục hiện tại hoặc thay đổi thư mục hiện tại. Trong trợ giúp là đây - lưu ý các dòng cuối cùng:

:cd[!] {path}           Change the current directory to {path}.
                        If {path} is relative, it is searched for in the
                        directories listed in |'cdpath'|.
                        Does not change the meaning of an already opened file,
                        because its full path name is remembered.  Files from
                        the |arglist| may change though!
                        On MS-DOS this also changes the active drive.
                        To change to the directory of the current file: >
                                :cd %:h

Như đã lưu ý ở đầu trợ giúp :cd, điều này ảnh hưởng đến thư mục làm việc của vim, không chỉ những gì :Extrả về hoặc sử dụng các lệnh nội bộ, vì vậy các lệnh bên ngoài cũng sẽ sử dụng vị trí mới.


Có một sự kiện giống như "thay đổi thư mục", trong khi navigatin, mà tôi có thể liên kết một autocommand? Ngoài ra, nó chỉ hoạt động sau khi mở một tập tin?
guido 9/2/2015

@guido Không phải tôi biết, nhưng hai câu trả lời khác có vẻ như có khả năng thay đổi tự động
Izkata

7

Tôi đặt hai tùy chọn sau để đảm bảo rằng thư mục làm việc hiện tại của Vim luôn giống với bộ đệm hiện tại.

set autochdir                   " Changes the cwd to the directory of the current
                                " buffer whenever you switch buffers.
set browsedir=current           " Make the file browser always open the current
                                " directory.

Lệnh thứ hai thực hiện nó; thư mục đầu tiên cũng sẽ thay đổi khi mở tệp vim path/to/filemà tôi không muốn.
guido 12/2/2015

@guido Tôi không hiểu cách chỉ browsedircài đặt ảnh hưởng đến hành vi bạn mô tả. Cài đặt đó ảnh hưởng đến thư mục nào mà trình duyệt tệp GUI mở ra, không phải thư mục nào được sử dụng để hoàn thành dòng lệnh.
Giàu

@Rich bạn hoàn toàn đúng; Tôi quên xóa let g:netrw_keepdir=0khỏi vimrc của tôi trước khi thử nghiệm điều này!
guido 24/2/2015
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.