Làm cách nào để gx nhận ra URL đầy đủ trong vim?


19

Theo mặc định, nếu một bộ đệm trong vim chứa một URL như http://www.google.com, gxở chế độ bình thường sẽ mở một trình duyệt có URL đó. Điều đó rất tiện dụng. Tuy nhiên, nếu URL có các tham số URL (ví dụ http://www.google.com/search?q=stuff), thì các tham số URL bị bỏ lỡ (tức là vừa http://www.google.com/searchđược mở).

Tôi đang sử dụng bản vá MacVim 7.4, với Chrome là trình duyệt chính (trên OS X 10.9).

Có một cách dễ dàng, lý tưởng với tùy chỉnh tối thiểu, để gxnhận ra một URL đầy đủ?


Tôi không thể sao chép điều đó với vim 7.4 trên linux. Tham số được truyền cho firefox chính xác khi sử dụng 'let g: netrw_browsex_viewer =' firefox 'cho tôi.
PhilippFrank

@PhilippFrank URL ví dụ không hoạt động với tôi (Vim 7.4, Linux) ... Trong mọi trường hợp, giải pháp của tôi là chọn URL ở chế độ trực quan, sau đó sử dụng gx(không lý tưởng nhưng tốt hơn so với sao chép / dán ).
Martin Tournoij

1
Đây là một biến, không phải là một tùy chọn, vì vậy bạn cần sử dụng let.
Martin Tournoij

1
Tôi không thể sao chép bằng GVim 7.4 trên Windows và Chrome. Tất cả các URL bạn đề cập được mở chính xác bởi gx.
Gonçalo Ribeiro

1
Xác nhận lỗi của OP. Đã thử với VIM 7.4.473 & 7.4.663. Đã thử từ tài khoản người dùng uy tín (không có .vimrc), với các thiết bị đầu cuối khác nhau ( urxvt, sakura) và các trình duyệt khác nhau ( g:netrw_browsex_viewerđược đặt thành 'uzbl-browser'/ 'firefox'/ 'google-chrome'.
user569825

Câu trả lời:


13

Như @Carpetsmoker chỉ ra trong bình luận của mình, g:netrw_gxxác định những gì sẽ được coi là một phần của URI.

Theo mặc định, nó được đặt thành "<cfile>". Từ các tài liệu ( :help <cfile>):

<cfile> is replaced with the path name under the cursor

Nó thoát khỏi tôi, tại sao các phần tham số (nghĩa là ?) của một URL đang bị coi là một phần của "tên đường dẫn", nhưng cuối cùng tôi đã chọn đặt phần sau, như là giải pháp của mình:

" Use whole "words" when opening URLs.
" This avoids cutting off parameters (after '?') and anchors (after '#'). 
" See http://vi.stackexchange.com/q/2801/1631
let g:netrw_gx="<cWORD>"                                                                                                                   

Bây giờ điều này bao gồm bất cứ điều gì Wsẽ chọn. (Thử viWchuỗi trên VIM.)

Từ các tài liệu: <cWORD> is replaced with the WORD under the cursor


Gợi ý: Sử dụng gxtrong chế độ trực quan , nó sẽ mở chuỗi được chọn trực quan (bất kể cấu hình trên).


Một hành vi kỳ lạ khác: Khi URI kết thúc bằng a /, lần đầu tiên nó được tải xuống (với curl) và sau đó mở ra. Xóa dấu vết /, URI được mở trực tiếp trong trình duyệt.
dùng569825

2
"Tên đường dẫn" được xác định bởi 'isfname'tùy chọn, không bao gồm ?dưới dạng ký tự tên tệp hợp lệ theo mặc định. Thay đổi tùy chọn này đòi hỏi phải cẩn thận vì không thể đặt cục bộ thành bộ đệm. Trừ khi NetRW đang thay đổi tùy chọn này, thì điều đó giải thích tại sao các URL OP không hoạt động gx. Có thể có sự khác biệt trong các phiên bản NetRW đang được sử dụng, điều này sẽ giải thích cho hành vi khác nhau mà Carpetsmoker thấy.
jamessan
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.