Cách truyền tên tệp hiện tại bằng một đường dẫn khác đến dòng lệnh


8

Có cách nào để làm cho biểu tượng đặc biệt %hoạt động với tên đường dẫn trên dòng lệnh không? Chẳng hạn, tôi muốn làm:

:diffsplit Path\to\other\directory\%

Để tôi có thể làm một @:cách nhanh chóng để so sánh các tập tin cùng tên. Tuy nhiên, điều này chỉ mở ra một bộ đệm mới được gọi là %.

Tất nhiên tôi có thể làm:

:exe 'diffsplit Path\to\other\directory\'.expand('%')

Nhưng điều này là cồng kềnh vì tôi không thể tab hoàn thành các thư mục khi gõ lệnh.

Có cách nào khác tốt hơn để làm điều này?

Đây là một câu hỏi liên quan , nhưng nó không giải quyết chính xác tình huống của tôi.

Chỉnh sửa: Chỉ cần làm rõ, tôi muốn có thể sử dụng lại chính xác lệnh cho các tệp khác nhau. Vì vậy, một giải pháp chỉ đơn giản là tự động điền tệp hiện tại trong dòng lệnh sẽ không hoạt động. Lệnh tương tự cần làm việc cho các tên tệp khác nhau .


Bạn có thể sử dụng một cmap cho% để nó mở rộng thành tên tệp, điều đó có thể giúp: D
SibiCoder

Điều này có cùng một vấn đề mà giải pháp của Kent có. Ngay khi bạn nhấn %, nó sẽ điền vào tên tệp, nhưng sau đó khi tôi muốn sử dụng lại dòng đó, tên tệp cũ vẫn sẽ xuất hiện. Tôi muốn% tự động chèn tên tệp hiện tại, bất cứ điều gì xảy ra vào thời điểm đó mà không phải nhập lại.
Tumbler41

2
:diffsplit Path/to/other/directory/%:t
Sato Katsura

Wow, tôi nghĩ rằng tôi đã thử nó, nhưng bạn đúng mà làm việc! Cảm ơn! Nếu bạn muốn đưa nó vào câu trả lời tôi sẽ chấp nhận nó.
Tumbler41

Câu trả lời:


10

Các ký tự đặc biệt (xem :h cmdline-special) và sửa đổi tên tệp (xem :h filename-modifiers) được mở rộng trên dòng lệnh, vì vậy:

:diffsplit Path/to/other/directory/%:t

1

Vì vậy, nó chỉ ra rằng đó là một vấn đề Windows ngu ngốc. Biện pháp khắc phục cho điều này là chỉ cần sử dụng dấu gạch chéo về phía trước trong tên đường dẫn. tức là :diffsplit Path/to/other/directory/%chỉ hoạt động tốt

Tôi đã khắc phục điều này trên hệ thống của mình bằng cách sử dụng tùy chọn set shellslashmặc định để sử dụng dấu gạch chéo ngay cả trên Windows.


Vâng, dấu gạch chéo ngược được sử dụng cả để thoát khỏi ý nghĩa đặc biệt %và là dấu phân cách đường dẫn mặc định trên Windows. Vim không thể nói bạn đã nghĩ gì trong đầu.
Ingo Karkat

Xem, tôi nghĩ về điều đó. Vì vậy, tôi nghĩ rằng tôi chỉ có thể làm một directory\\%nhưng điều đó vẫn không hiệu quả. IDK, nhưng tôi đoán nó không thành vấn đề vì các dấu gạch chéo về phía trước giải quyết vấn đề.
Tumbler41

0

Tôi không biết điều này có ổn với bạn không:

:diffsplit Path/to/somewhere/<c-r>%

Chỉ cần thêm một lần nhấn phím vào bản gốc của bạn, <C-r>để điền vào %giá trị đăng ký.


Điều này vẫn không cho phép sử dụng @:cho các tệp trong tương lai vì nó "mã cứng" tên tệp hiện tại.
Tumbler41

sau đó bọc một lệnh tùy chỉnh như :Mydiff /path/to/there/vậy để đường dẫn có thể được hoàn thành. chỉ cần chuyển cái này cho lệnh / chức năng của bạn vớiexec
Kent
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.