2012-09-10 28 views
9

Đôi khi tôi phải làm việc trong Windows, điều này thường có nghĩa là sử dụng vỏ Bash. Nếu tôi (ví dụ) trong vim (khônggvim) với một số tập tin mở, và tôi nhấn CtrlZ đi một thời gian ngắn trở lại vỏ và làm điều gì đó trước khi trở về vim, thay vì đình chỉ quá trình vim của tôi Git Bash tạo một vỏ DOS mới. Đây là điều cuối cùng tôi muốn. Googling turns up nothing useful (tại thời điểm này - YMMV trong tương lai của tôi). Điều gì đang xảy ra?Tại sao Ctrl-Z trên vỏ bẻ khóa Windows Git không thành công?

Trả lời

1

đôi khi tôi phải làm việc trong Windows, thường có nghĩa là sử dụng vỏ Git Bash.

Tốt. Tôi cũng vậy.

Nếu tôi (ví dụ) trong vim (không phải gvim) với nhiều tệp đang mở và tôi nhấn^Z để quay trở lại vỏ và làm điều gì đó trước khi quay lại vim thay vì tạm dừng quá trình vim của tôi Bash tạo một vỏ DOS mới.

Nếu bạn thực hiện các quy trình khác trong git bash, CTRL-Z sẽ không tạm ngưng chúng. Vim làm việc xung quanh đó và, thay vào đó, tạo ra một trình bao để đạt được một kết quả tương tự. Vim là một công cụ trong các cửa sổ không yêu cầu bash, thay vì cửa sổ lệnh nhắc sẽ nhất thiết phải được cài đặt trong một cửa sổ máy. Tôi cho rằng đây là một sự lựa chọn an toàn của chương trình nhị phân cửa sổ.

Đây là điều cuối cùng tôi muốn. Googling không có ích gì (vào thời điểm này - YMMV trong tương lai của tôi). Chuyện gì vậy?

Tôi đoán ở đây là vim có bản đồ CTRL-Z để tạo vỏ hệ điều hành DOS. Nếu bạn muốn tạo một vỏ bash thay vào đó, bạn có thể gõ:

:!sh

Và bạn sẽ được thực hiện trong một vỏ bash.

1

Tôi đoán lý do cho điều này là Windows không triển khai API quy trình tạm ngưng POSIX. Tôi đã có cùng một vấn đề và không tìm thấy một giải pháp chung. Nhưng đối với trường hợp phổ biến cụ thể (chẳng hạn như gvim), một công trình xung quanh là tạo ra một kịch bản ở đâu đó trong PATH của bạn (ví dụ/c/bin/gvim) dọc theo dòng của

#!/bin/env bash 
    /c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe [email protected] & 
+0

Nếu tôi hiểu bạn, bạn đang sử dụng nó như một trình bao bọc cho gvim và bạn ngụ ý rằng^Z *** SILL *** làm việc cho tập lệnh trình bao bọc, mặc dù nó không hoạt động cho thực tế thực thi? Được rồi, điều đó có ý nghĩa, vì tệp thực thi thực sự là tệp * exe *. – iconoclast

+0

Rất tiếc, không,^Z vẫn không hoạt động. Tất cả các kịch bản không được đặt gvim vào nền khi tôi gõ "gvim" trong bash, vì vậy mà tôi không phải^Z để gõ lệnh tiếp theo. Về cơ bản, nó chỉ tiết kiệm phải nhớ để gõ & sau khi lệnh. – setrofim

+0

Tôi không chắc làm thế nào điều này giúp tôi. Tôi đang sử dụng vim, chứ không phải gvim, vì vậy nó mở trong terminal. Tôi muốn một cách để đình chỉ nó để trở về dòng lệnh. – iconoclast