2011-08-22 13 views
5

Tôi làm việc hầu như chỉ trong thiết bị đầu cuối, và rất thường xuyên tôi cần phải xem các tập tin xuất hiện trong stacktraces lỗi. Định dạng rất phổ biến là /some/file:99, trong đó 99 là số dòng. Tôi muốn để có thể sao chép dòng đó, và mở goto dòng đó dễ dàng trong vim.Có cách nào để làm cho vim nhận ra số dòng ở cuối tên tệp không?

Điều tôi đang tìm kiếm là khả năng thực hiện :e /some/file:99 và vim tự động mở tệp đó ở dòng 99. Có điều gì đó như thế này tồn tại không? Nếu không, có thể viết một plugin cho nó không?

Trả lời

1

Plugin này được thiết kế với mục đích cụ thể này trong tâm trí: file:line

6

Tóm lược sửa đổi lệnh có thể mất tùy chọn, vì vậy hãy thử này:

:e +99 /some/file 

Chỉ cần tìm thấy liên kết này:

http://vim.runpaint.org/basics/opening-files/

Bạn có thể thêm tiền tố tên tập tin với + linenumber hướng dẫn Vim để nhảy đến dòng nhất định sau khi mở. Ví dụ: vim +7 todo.list hoặc: e +100 treatise.txt. Nếu bạn bỏ qua linenumber, tức là bạn tiền tố tên tệp bằng dấu +, Vim sẽ nhảy tới cuối tệp.

+0

Có thể remap ': e/some/file: 99' thành ': e +99/some/file' không? Hay sẽ có cách nào tốt hơn để giải quyết vấn đề này? Mặc dù giải pháp của bạn là sạch sẽ, nhưng nó không cải thiện nhiều cho trường hợp sử dụng của tôi chỉ là mở tệp, sau đó thực hiện ': 99' – Suan

+0

Lệnh gf bạn đang tìm kiếm? http://vim.wikia.com/wiki/Open_file_under_cursor –

1

Trường hợp này /some/file:99 xuất phát từ đâu? Nó là đầu ra của một số lệnh bên ngoài? Nếu vậy, bạn nên đọc tài liệu liên quan đến chế độ quickfix. (:h quickfix).

+0

lỗi/stacktrace kết quả đầu ra dường như có một định dạng khá chuẩn của filepath: linenumber, đó là nơi tôi đã nhận nó từ – Suan

+0

@Suan: bạn có nghĩa là bạn có một tệp chứa lỗi biên dịch mở trong Vim, và bạn muốn chuyển đến dòng có liên quan của tập tin? –

+0

Sau đó, bạn nên định cấu hình đúng 'makeprg'' và gọi': make'. Không cần sử dụng bất kỳ plugin nào. Đây là một tính năng dựng sẵn. –

2

Nếu bạn có thể chuyển hướng /some/file:99 vào một tập tin thì bạn có thể nhảy đến /some/file tại dòng 99 bằng cách ấn gF khi bạn trỏ là vào tên tập tin của.