Làm cách nào để có thể hiển thị vĩnh viễn đường dẫn của tệp hiện tại trong Vim?


90

Tôi biết CTRLghiển thị tệp hiện tại bạn đang làm việc. Có cách nào để sửa đổi của tôi .vimrcđể tên tệp / đường dẫn luôn được hiển thị không?

Câu trả lời:


128

Trong dòng trạng thái của bạn, hãy thêm một %Fđể hiển thị đường dẫn đầy đủ:

:help statusline

" Add full file path to your existing statusline
set statusline+=%F

Lưu ý, %Fsẽ là đường dẫn đầy đủ. Để lấy một đường dẫn liên quan đến thư mục làm việc, hãy sử dụng%f .

Nếu dòng trạng thái của bạn chưa hiển thị, trước tiên bạn có thể cần phải định cấu hình dòng trạng thái đó để luôn hiển thị, thông qua laststatus=2

set laststatus=2

Xem :help laststatuscác tùy chọn có ý nghĩa gì. Thông thường, dòng trạng thái có thể bị ẩn hoặc bị ẩn trừ khi có nhiều bộ đệm được mở, nhưng tôi thấy nó cực kỳ hữu ích khi luôn có các tùy chỉnh như thế này, rất đáng để bỏ một khoản dự trữ dòng màn hình cho nó.


1
Tôi chắc chắn thích câu trả lời của bạn hơn câu trả lời của tôi, nhưng việc thêm vào câu trả lời set statusline+=%Fcủa tôi ~/.vimrcdường như không làm những gì bạn nói. Mặc dù các tài liệu chắc chắn có vẻ đồng ý với bạn ...
Tim Pote

1
Điều này không có hiệu lực. Xin lỗi nếu tôi thiếu một cái gì đó đơn giản, bạn có bất kỳ suy nghĩ về điều đó?
zallarak

1
@TimPote Phiên bản vim nào? Làm việc cho tôi. Có thể dòng trạng thái của bạn đã đẩy nó đi hoặc giới hạn chiều rộng. Hãy thử ngay :set statusline=%Fmà không cần+
Michael Berkowski

@zallarak Xem bình luận của tôi với Tim. Dòng trạng thái của bạn có thay đổi nếu bạn chỉ đơn giản làm vậy :set statusline=%F? Nhìn cách trên bên phải hoặc bên trái để xem nếu tên tập tin được ẩn đằng kia trong statusline
Michael Berkowski

2
@TimPote Có thể set laststatus=2để dòng trạng thái luôn hiển thị. Tôi quên rằng tôi đã có điều đó trên.
Michael Berkowski

20

đặt ls = 2

thêm cái này vào vimrc, và bạn sẽ luôn thấy tên tệp ở dưới cùng.


set modeline đã không làm bất cứ điều gì cho tôi, nó giả sử để làm gì? (đặt ls = 2 đã làm điều gì đó mặc dù). Làm cách nào để tôi có thể tự giải quyết vấn đề này vào lần sau? Cảm ơn! :)
Charlie Parker

1
set modelinehơi nguy hiểm và không liên quan gì đến câu hỏi. Nó cho phép thực hiện các lệnh Vim trong 5 dòng đầu / cuối của tệp. Nó chỉ nên được bật bởi những người biết tại sao và thực sự muốn điều này. (Đó là lý do tại sao tôi -1 câu trả lời này)
Tiến sĩ Beco

16

Tôi đã tìm thấy 2 cách để hiển thị đường dẫn tệp trong thanh Tiêu đề của gnome-terminal trong khi chỉnh sửa tệp bằng Vim.

Cách đơn giản hơn (và tốt hơn): Thêm dòng sau vào ~/.vimrc:

set title

Cái nào sẽ hiển thị cho bạn ở trên cùng:

filename.ext (~/path_to_directory_where_your_file_is/) - VIM

Cách phức tạp hơn sẽ hiển thị cho bạn đường dẫn tệp tuyệt đối. Nó được ghi lại một cách chi tiết hơn trong bài đăng blog này mà tôi đã viết gần đây.


"Tiêu đề đặt" sẽ hiển thị tên tệp trên tab đầu cuối. Tính năng thú vị.
duleshi

Thú vị như nó là, không trả lời câu hỏi được hỏi. Ngoài ra, bạn khẳng định nó tốt hơn - nhưng có thể không. Ví dụ: nếu bạn vim của bạn đang mở trong thiết bị đầu cuối ở chế độ toàn màn hình, tiêu đề sẽ không hiển thị. Vì vậy, downvote.
tập

8

Cách duy nhất tôi tìm thấy để có được đường dẫn đầy đủ của tập tin Tôi đang làm việc tại là: :echo expand('%:p'). Bạn có thể ánh xạ lại ctrl + g nếu muốn, nhưng cá nhân tôi không thích thay đổi quá nhiều tiêu chuẩn. Tôi đã lập bản đồ F7 như vậy:

map  <F7> <Esc>:echo expand('%:p')<Return>

4
:help CTRL-Gvà tìm hai đoạn văn CTRL-Gcó đếm.
Stefan Majewsky

1
Cảm ơn, @StefanMajewsky. 1 CTRL-Ghiển thị tên tệp đầy đủ. Tôi đã tìm kiếm tùy chọn này.
Anton Kiselev 23/09/13

I love u Tim, đây là cách duy nhất để chỉ ra con đường tuyệt đối, ngay cả khi không có ~.
ryancheung

7

Nếu bạn đang sử dụng vim-airline , hãy nhập .vimrc:

let g:airline_section_c = '%<%F%m %#__accent_red#%{airline#util#wrap(airline#parts#readonly(),0)}%#__restore__#'

Đây là một sửa đổi của mặc định của hãng hàng không, thay đổi %fbởi %F.


6

Tôi đã luôn sử dụng :f, nhưng câu trả lời và liên kết từ @MichaelBerkowski thật tuyệt vời!

:f hiển thị đường dẫn, số dòng, trạng thái đã sửa đổi, vị trí con trỏ hiện tại và hơn thế nữa ...

Tôi không biết về CTRLGnó nhưng nó có vẻ giống nhau.


5

Tôi nghĩ rằng dòng trạng thái rất mạnh mẽ và tiện dụng. Strait ra khỏi hộp, nó sẽ hiển thị tên tệp, vị trí con trỏ và một số cờ. Nhưng bạn muốn làm như tôi và thay thế tên tệp -part bằng đường dẫn đầy đủ đến tệp.

Vì vậy, trong khi chỉnh sửa dòng trạng thái của .vimrctôi có thể trông giống như mặc định:

.vimrc                                                        26,16           7%

Bạn có thể xem cài đặt của dòng trạng thái với:

:set statusline?

Nhưng nếu bạn chưa thực hiện bất kỳ thay đổi nào và không có mô-đun nào thay đổi thì nó sẽ trống. Nhưng bằng các ví dụ trong phần trợ giúp ( :help statusline), bạn có thể thấy rằng mặc định là:

:set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P

Vì vậy, hãy bao gồm điều này trong của bạn .vimrcvà thay đổi %fthành %F. Tôi cũng đã thêm cờ loại tệp ( %y) vào dòng trạng thái của mình vì tôi thấy nó thuận tiện. Vì vậy, cấu hình kết quả của tôi trông như thế này:

:set statusline=%<%F\ %h%m%r%y%=%-14.(%l,%c%V%)\ %P

Và kết quả sẽ giống như sau:

~/.vimrc [vim]                                                26,16           7%

Đọc tốt:

Tái bút. Tôi chạy vim 7.3


4

Nếu bạn muốn đường dẫn bao gồm các liên kết tượng trưng đã phân giải, hãy sử dụng như sau:

set statusline +=%{resolve(expand('%:p'))}\ %*

Để giữ chữ viết tắt '~' cho thư mục chính của bạn, hãy bao gồm fnamemodify

set statusline +=%{fnamemodify(resolve(expand('%:p')),':~')}\ %*

Cả hai làm việc cho tôi trong VIM 7.4 sử dụng iTerm2 để SSH vào Ubuntu 16.04 LTS
James Nicholson
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.