Mở tập tin theo dõi git bên trong trình soạn thảo


7

Tôi đang cố gắng tạo một lệnh Vim để mở tất cả các tệp đã sửa đổi được theo dõi bởi Git.

Lệnh sau hoạt động nếu chỉ có một tệp được sửa đổi (và không thành công nếu thư mục làm việc hiện tại không phải là kho lưu trữ git).

Bất kỳ con trỏ về làm thế nào để vòng lặp kết quả của lệnh bên ngoài tạo ra nhiều dòng?

command Git execute ":e `git diff --name-only`"

Câu trả lời:


9

Bạn có thể sử dụng argslệnh thay thế:

command G execute ":args `git diff --name-only`"

Tập tin đầu tiên sẽ được mở và nếu bạn chạy :lssau khi thực hiện điều này, bạn cũng sẽ thấy các tập tin khác được liệt kê. Hoặc, như ghi chú romainl, bạn hoàn toàn không cần execute:

command G :args `git diff --name-only`

Các argaddlệnh có thể hữu ích quá. Từ :h args:

:ar[gs] [++opt] [+cmd] {arglist}                        :args_f
                        Define {arglist} as the new argument list and edit
                        the first one.  This fails when changes have been made
                        and Vim does not want to abandon the current buffer.
                        Also see ++opt and +cmd.
                        {Vi: no ++opt}

:ar[gs]! [++opt] [+cmd] {arglist}                       :args_f!
                        Define {arglist} as the new argument list and edit
                        the first one.  Discard any changes to the current
                        buffer.
                        Also see ++opt and +cmd.
                        {Vi: no ++opt}


:[count]arga[dd] {name} ..                      :arga :argadd E479
:[count]arga[dd]
                        Add the {name}s to the argument list.  When {name} is
                        omitted add the current buffer name to the argument
                        list.

4
:nextlà một khả năng khác. Ngoài ra, :executekhông cần thiết, ở đây, vì vậy lệnh có thể được rút ngắn command! G args `git diff --name-only` . AArgh, backticks là khó khăn.
romainl

Hoạt động như một sự quyến rũ, cảm ơn bạn mur và romainl!
samuke
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.