2010-02-01 26 views
32

Giả sử tôi có:zsh bí danh -> chức năng?

alias gg="git grep" 

sau đó những thứ như:

gg "int x" 

công trình, nhưng

gg int x 

được khiếu nại. Có cách nào để viết lại gg như là một chức năng trong zsh để nó có tất cả các đối số sau gg, và chất liệu chúng thành một chuỗi?

Cảm ơn!

Trả lời

58
gg() { git grep "$*"; } 
+6

Uhm, để chúng đi vào một chuỗi, bạn cần '" $ * "' thay vì '" $ @ "' - biểu mẫu bạn viết sẽ chuyển chúng qua các tham số riêng biệt, giống như bí danh. –

+1

Cảm ơn bạn đã sửa. –

+0

Điều này có lợi ích cũng tương thích với bash – Jian

4

Đối với trường hợp sử dụng cụ thể của bạn, đây là một ý tưởng tồi. git-grep đang mong đợi một mẫu đơn lẻ arg. Bạn đang cố gắng để có được vỏ để điều trị không gian của bạn (giữa int và x) như là một phần của mô hình. Điều này sẽ phá vỡ nhanh chóng khi bạn thử một cái gì đó như: gg foo.*bar hoặc nhiều thứ khác mà trình bao có thể diễn giải. Vì vậy, bất cứ điều gì sau khi gg thực sự cần được trích dẫn. Đây là lý do tại sao git grep int x cũng không hoạt động: fatal: ambiguous argument 'x': unknown revision or path not in the working tree...

Nếu bạn nghĩ rằng gg là một trình bảo vệ tổ hợp phím có giá trị, bạn nên giữ arg của bạn để nó phù hợp với những gì git-grep hy vọng. Bí danh ban đầu của bạn là tốt cho việc này. Và tiếp tục đơn hoặc kép trích dẫn mẫu của bạn, giống như bạn làm với bất kỳ lệnh regex-accepting nào khác.

+0

Không phải là câu trả lời nhưng là một điểm rất tốt. – shadowtalker

Các vấn đề liên quan