Tạo một tệp mới trong thư mục của tệp đang mở trong vim?


93

Tôi thấy mình ở vị trí mà tôi muốn tạo một tệp mới trong cùng thư mục với thư mục chứa tệp đang mở. Làm cách nào để tạo tệp mới trong thư mục của tệp đang mở trong vim? Ngoài ra, có nơi nào để tôi có thể tự học những điều này không? Googling không giúp được gì.


Bạn đang nói về vim, trình soạn thảo văn bản trên Linux?
ianaz

Câu trả lời:


173

Từ bên trong Vim, các tệp mới được tạo giống như các tệp hiện có được chỉnh sửa, thông qua các lệnh như :edit filenamehoặc :split filename. Để duy trì chúng vào đĩa, bạn cần (tùy chọn nhập nội dung và) duy trì chúng qua :write.

Giống như một dấu nhắc lệnh, Vim có một khái niệm về thư:pwd mục hiện tại ( liệt kê nó). Tất cả các đường dẫn tệp đều liên quan đến nó. Bạn không cần phải sao chép đường dẫn đến tệp hiện tại của mình, có một số phím tắt tuyệt vời cho chúng: %đề cập đến tệp hiện tại, :hlà một công cụ sửa đổi cho thư mục của nó, trừ tên tệp (cp. :help filename-modifiers). Vì thế,

:e %:h/filename
:w

sẽ tạo một tệp mới có tên filenametrong cùng thư mục với tệp hiện đang mở và ghi tệp đó.

Ngoài ra, một số người thích Vim luôn thay đổi thư mục của tệp hiện tại. Điều này có thể được cấu hình bằng cách đặt

:set autochdir

vào ~/.vimrctệp của bạn (được đọc khi khởi động Vim). Sau đó, ở trên trở nên đơn giản

:e filename
:w

Cuối cùng, Vim có một tích hợp tuyệt vời :help. Tìm hiểu cách điều hướng và tìm kiếm nó!


2
autochdirthật không may, và tôi thấy mình không thể phụ thuộc vào nó. Thay vào đó tôi đặt một autocmd trong vimrc của tôi:autocmd BufEnter * silent! lcd %:p:h:gs/ /\\ /
dash-tom-bang

1
Dawg cũng muốn bỏ phiếu cho câu trả lời của bạn nhưng Dawg không có đại diện cần thiết. Cảm ơn cho lời giải thích bằng văn bản!
Dawg

14

bạn nên thử với plugin "nerdtree". Trong cửa sổ nerdtree, bạn đã nhập phím m và các lựa chọn thao tác tệp sẽ hiển thị cho bạn


11

Nếu bạn muốn tạo một tệp mới và cũng hiển thị nó trong cửa sổ bên cạnh tệp hiện tại của bạn, bạn có thể thử cách này:

:vsp newfile

Viết vsptắt của vertical split, và nó chia đôi màn hình, một bên hiển thị tệp hiện tại của bạn, cái kia hiển thị tệp mới của bạn (cũng chỉ hoạt động với sp, đó là chia theo chiều ngang).

Theo nhận xét của @ MartinLyne ở trên, điều này sẽ tạo tệp trong thư mục của tệp mà bạn đã mở vim. Để điều chỉnh điều này, bạn có thể thay đổi thư mục làm việc hiện tại như sau:

:cd %:p:h

Lệnh này thay đổi thư mục làm việc hiện tại thành thư mục của tệp hiện hoạt, có nghĩa là chạy vsplệnh (hoặc bất kỳ lệnh nào ở trên) sẽ tạo tệp trong thư mục đó.


2

Khi bạn đã mở vim ở vị trí không tồn tại như $ vim /etc/<some_folder/<next_folder>/file.cfg

sau đó để tạo một thư mục mới khi đang ở trong vim, chỉ cần chạy ở chế độ bình thường :! mkdir -p /etc/<some_folder/<next_folder>và lưu tài liệu của bạn như bình thường :w :x ZZ(bất cứ điều gì bạn thích)

đó là nó


1

Đây là dành cho Gvim! Nhập vào đây để xem thư mục hiện tại.

:cd

sau đó thay đổi nó bằng

:cd desktop/somefolder

sau đó lưu hoặc tạo tệp mới ở đó

:enew asd.cpp

bây giờ một lần nữa xem tệp

:cd

0

Tôi khá muộn đến bữa tiệc, nhưng một lựa chọn khác là mở NERDtree bằng :Ehoặc :Explore(hoặc các lựa chọn thay thế phân tách của nó :Vexplore/ :Sexplore== :Vex/ :Sex).

Trong NerdTree, bạn có thể tạo một tệp mới %và nhập tên. Nó sẽ tự động mở tệp và tạo nó sau khi bạn :w/ lưu nó.

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.