Câu trả lời:
Bạn có thể nhấn {count}Ctrl-G
:
{count}CTRL-G Like CTRL-G, but prints the current file name with
full path. If the count is higher than 1 the current
buffer number is also given.
Nhấn 1theo sau là Ctrl+ Ghiển thị đường dẫn đầy đủ của tệp hiện tại. Nếu {count}
cao hơn 1, tên bộ đệm cũng sẽ được hiển thị.
(Chỉ nhấn Ctrl+ Ghiển thị đường dẫn liên quan đến thư mục làm việc hiện tại của Vim, như được chỉ ra bởi Jasper trong các bình luận.)
Bạn có thể sử dụng lệnh sau trong .vimrc
để thêm đường dẫn đầy đủ vào dòng trạng thái, để nó luôn hiển thị:
set statusline+=%F
1C-g
!
Đăng ký %
chứa tên của tập tin hiện tại.
Các lệnh sau có thể được nhập để hiển thị thông tin hiển thị:
:echo @% |" directory/name of file
:echo expand('%:t') |" name of file ('tail')
:echo expand('%:p') |" full path
:echo expand('%:p:h') |" directory containing file ('head')
Nếu tất cả những gì bạn muốn là hiển thị tên của tệp hiện tại, hãy nhập :f
/ :ls
hoặc nhấn Ctrl- g(đối với đường dẫn đầy đủ, 1sau đó nhấn Ctrl- g).
Trong chế độ chèn, nhập Ctrl- rsau đó %để chèn tên của tệp hiện tại.
Các lệnh sau đây chèn các dòng bao gồm đường dẫn đầy đủ của tệp hiện tại và tệp thay thế vào bộ đệm:
:put =expand('%:p')
:put =expand('#:p')
Nguồn: Lấy tên của tệp hiện tại tại vim wikia
Liên quan:
=expand...
biểu thức đó sau Ctrl-R
khi ở chế độ chèn.
Bạn có thể sử dụng :!ls %:p
để có được đường dẫn đầy đủ đến tập tin hiện tại.
Tùy thuộc vào ngữ cảnh cũ, %
sẽ có nghĩa là nội dung của tệp hoặc tên tệp. Khi tách ra, nó đại diện cho đường dẫn tệp liên quan đến thư mục hiện tại. Lệnh ' %:p
' sẽ thêm công cụ sửa đổi tên tệp đường dẫn đầy đủ vào %
.
Có một vài sửa đổi tên tệp thú vị khác như:
:~
: Lấy đường dẫn tệp liên quan đến thư mục chính (vì lý do này không hoạt động với tôi):.
: Nhận đường dẫn tệp liên quan đến thư mục hiện tại ( %
mặc định):r
: Tên tập tin gốc. Tên của tệp không có phần mở rộng.:e
: Phần mở rộng của tập tin.:h
: Tách /
và trả lại nửa bên trái (nghĩa là nếu tôi đang chỉnh sửa một tệp trong đường dẫn /tmp/test.txt
và chạy %:p:h
sẽ trả về/tmp
:t
: Tách /
và trả lại một nửa bên phải (nghĩa là nếu tôi đang chỉnh sửa một tệp trong đường dẫn /tmp/test.txt
và chạy %:p:t
sẽ trả vềtext.txt
Người ta có thể thấy các thư mục làm việc hiện tại với :pwd
. Tất nhiên, đây chỉ là thư mục chứ không phải tên tệp. Để có được thư mục làm việc và tên tệp, chúng ta có thể sử dụng thanh ghi đặc biệt %
, chứa thông tin về tệp hiện tại.
Nếu bạn sử dụng :echo @%
, bạn sẽ nhận được thư mục và tên tệp của tệp hiện tại.
Nếu bạn sử dụng :echo expand('%:p')
, bạn sẽ nhận được đường dẫn và tên tệp đầy đủ của tệp hiện tại. Điều này rất giống với câu trả lời của CharlesL .
Tuy nhiên, tôi nhớ điều này bởi vì nếu bạn sử dụng trợ giúp của vim :h expand
, thì nó sẽ đề cập đến điều đó %
và %:p
người thân của họ.
Tôi sử dụng:
:f[ile]
Đó là :f
hoặc :file
.
Tôi ngạc nhiên không ai đề cập đến điều này trong các câu trả lời, tôi có thiếu điều gì không?
Để hiển thị đường dẫn đầy đủ cho tất cả các tệp, bao gồm các liên kết tượng trưng được giải quyết, hãy sử dụng cách sau.
:echo resolve(expand('%:p'))
Có nhiều câu trả lời tốt hơn, nhưng nếu (vì một số lý do) bạn muốn sử dụng trình bao để lấy đường dẫn đầy đủ của tệp (điều này hữu ích hơn nếu bạn sẽ thực hiện một số thao tác khác trên tệp bằng trình bao), trên một hệ thống giống như Unix bạn có thể chạy:
:!realpath %
hoặc là:
:'<,'>!realpath %
để chèn đường dẫn vào tài liệu qua lựa chọn hiện tại.
Đăng ký %
luôn chứa tên của tập tin. Một ví dụ trong thế giới thực có thể là nếu bạn đang chỉnh sửa tệp cấu hình, nhưng không có quyền ghi (và không muốn chạy Vim với quyền root), bạn có thể chỉnh sửa tệp, sau đó chạy:
:w ! sudo tee %
để lưu tệp (một chút nhỏ ngoài ý muốn ở đó, nhưng đó là một ví dụ tốt về những gì khác có thể được thực hiện với thanh %
ghi).
realpath
không phải là POSIX, vì vậy có thể đơn giản hơn để làm:!echo "$PWD/%"
Bạn cần đặt dòng trạng thái của mình thành có thể xem được và cũng đặt nó thành đường dẫn. Tôi đã làm như vậy vĩnh viễn bằng cách thêm hai dòng dưới đây vào ~ / .vimrc của tôi
set laststatus=2
set statusline+=%F
Nếu bạn muốn chỉ chạy một lần. Sau đó, khi VIing một loại tài liệu
:set laststatus=2 <ENTER>
:set statusline+=%F <ENTER>
Tôi sử dụng hãng hàng không vim cho điều đó và một số tính năng hay:
Bạn có thể hiển thị đường dẫn đầy đủ của tệp bạn đang chỉnh sửa trong thanh tiêu đề, đây là một cách thuận tiện để hiển thị đường dẫn tệp theo ý kiến của tôi.
Để làm điều đó, bạn cần đặt title
tùy chọn và titlestring
. Hiện tại tôi đang sử dụng các cài đặt sau:
set title
set titlestring=%{hostname()}\ \ %F\ \ %{strftime('%Y-%m-%d\ %H:%M',getftime(expand('%')))}
Nó sẽ hiển thị tên máy chủ của Vim, sau đó là đường dẫn đầy đủ của tệp và theo sau là lần sửa đổi cuối cùng của tệp. Xem hình dưới đây để xem demo
Ctrl+G
giống như 'đường dẫn liên quan đến vim' cwd '?