vim - mở tệp và số dòng goto bằng <tên tệp>: <dòng nbr>:


21

Một số công cụ như grep, py.test, vv ... sử dụng các mô hình <FileName>:<line number>:để trỏ đến lỗi. Ví dụ:

; grep -Hn Common setup.cfg
setup.cfg:11:    Common

Làm cách nào tôi có thể sửa đổi vim và gvim để tôi có thể gọi chúng như vậy:

gvim setup.cfg:11:

thay vì

gvim setup.cfg +11

Tôi biết rằng tôi có thể viết một kịch bản shell nhỏ sẽ phân tích mọi thứ nhưng tôi tự hỏi liệu có cách nào dễ dàng hơn không.


2
Điều này không hoàn toàn tương tự, nhưng vim có một tính năng để tải đầu ra từ grep hoặc (ví dụ) lỗi trình biên dịch từ make và điều hướng giữa chúng. Xem :help quickfixđể biết thêm.
Random832

Câu trả lời:


16

Bạn có thể sử dụng tập tin: plugin plugin có sẵn ở đây , chính xác những gì bạn muốn ...


1
Nó chắc chắn làm được và với phần thưởng thêm vào mà bạn có thể sử dụng vundle để cài đặt nó.
Sardathrion - Phục hồi Monica

1
Plugin dòng tham chiếu có một số vấn đề, bao gồm cả hỏng khi các trang tab được sử dụng. vim-fetch thực hiện những gì tập tin dòng, nhưng tốt hơn.
Lekensteyn

9

Không có cách nào và tôi nghĩ kịch bản là cách duy nhất. Lý do là, nếu bạn có một tệp có tên setup.cfg: 11 và muốn chỉnh sửa thì sao?

Đây là một kịch bản nhanh chóng thực hiện những gì bạn muốn như một oneliner ...

editline() { vim ${1%%:*} +${1##*:}; }

Xin lỗi điều này không chính xác: Nếu bạn có một tệp được gọi +11thì sao? Tất nhiên, bạn có thể sử dụng --cho điều đó.
Sardathrion - Phục hồi Monica

2
Bạn có thể chỉnh sửa tệp +11 bằng cách nói vim ./+11
Julian

3

Với Vundle.vim , hãy thêm phần này vào .vimrc:

Plugin 'bogado/file-line'

@Sardathrion: Bạn có vấn đề gì?
Dorian

Tôi chuyển đến neovim và có rất nhiều vấn đề đánh dấu các mô-đun khác (hoặc bất cứ điều gì neovim gọi chúng) là không tương thích.
Sardathrion - Phục hồi Monica

0

Bạn cũng có thể sử dụng bí danh như vậy:

alias gd 'set number=`echo \!:1 | perl -pe "s/([0-9]*:)?(.+)[,:]([0-9]+).*/\3/"`; set file=`echo \!:1 | perl -pe "s/([0-9]*:)?(.+)[,:]([0-9]+).*/\2/"`; eval "if ($number == $file) then \\
   gvim $file \\
else \\
   gvim $file +$number \\
endif"'
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.