Làm thế nào để xác định nội dung của một bộ đệm mới từ dòng lệnh?


7

Có cách nào để gọi Vim theo cách nó mở một bộ đệm với một số nội dung được chỉ định trên thiết bị đầu cuối, tức là không được lưu trong một tệp không?

Ví dụ, tôi muốn chạy vimvà để nó mở một bộ đệm có foo, bar, baz and quxghi trên đó.

Có một lựa chọn nào làm điều này?

Câu trả lời:


11

Bạn đã thử một cái gì đó như thế này?

$ echo "foo, bar, baz, and qux" | vim -

Hay như thế?

$ vim -c "put='foo, bar, baz, and qux'"

Ồ, thật ngọt ngào! Tôi đã thử vim < echo "test"nhưng không thành công. Tôi không biết về vim -! Và +/ -ccũng có thể hữu ích. Cảm ơn bạn.
Gonçalo Ribeiro

3

Giải pháp này hoàn toàn được lấy cảm hứng từ một romainl (rất cảm ơn anh ấy) nhưng nó cho phép mở nhiều bộ đệm với nhiều chuỗi.

Thêm các dòng sau vào .zshrc(hoặc .bashrchoặc bất kỳ tệp nào có liên quan nơi bạn xác định hàm bash)

function mvim {
    CMD="vim "
    for string in "$@"
    do
        CMD=$CMD"-c \"enew | put='"$string"'\" "
    done
    CMD=$CMD"-c \"bufdo 1d\""

    eval $CMD
}

Sau khi tìm nguồn cung cấp .zshrctệp của bạn, bạn sẽ có thể gọi chức năng sau:

mvim "foo bar" "baz" "and quz"

Nó sẽ mở một cá thể vim với 3 bộ đệm, mỗi bộ chứa một chuỗi.

Nếu không có đối số được cung cấp, một ví dụ vim thông thường sẽ được bắt đầu. Nếu một đối số là một chuỗi rỗng, một bộ đệm trống sẽ được tạo.

EDIT Tôi nhận ra rằng vì một lý do mà tôi không hiểu một dòng trống được tạo ra ở đầu mỗi bộ đệm nên tôi đã thêm dòng

CMD=$CMD"-c \"bufdo 1d\""

Để thoát khỏi dòng trống này trong tất cả các bộ đệm.


1
Đó là một kịch bản thú vị. Có thể hữu ích. Cảm ơn bạn :)
Gonçalo Ribeiro

3

Gần đây tôi đã tìm cách, làm thế nào để đưa nội dung clipboard vào một bộ đệm mới trong vim. Tôi nghĩ rằng, nó là giá trị để chia sẻ nó ở đây:

vim -c "put! *"

CẬP NHẬT:
Đây sẽ putlà văn bản từ đăng ký *trước !dòng hiện tại.

Các *+thanh ghi đề cập đến clipboard trong windows.

Trên linux +có nội dung của bảng tạm và *chứa văn bản đã chọn.


Trong vimrc thậm chí có thể được thực hiện tự động nếu argc bằng 0.
dash-tom-bang

Có lẽ bạn có thể tham khảo :help quotestar:help quoteplustrong câu trả lời của mình để giúp những người không biết những thanh ghi đó hiểu tại sao lệnh này hoạt động. Ngoài ra trên GNU / Linux, có một sự khác biệt giữa *+, trong khi trên Windows thì chúng tương đương nhau.
Gonçalo Ribeiro
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.