Tương đương với ^ D (trong bash) cho cmd.exe?


27

Có một hành trình phím tương đương để thoát một dấu nhắc lệnh trên Windows (được khởi chạy qua Start-> Run: cmd) sang chế độ chờ bash của Ctrl- dđể tránh việc phải gõ exitđể thoát khỏi trình bao?

Câu trả lời:


19

Số CtrlDtrên * nix tạo EOF, các shell khác nhau diễn giải là đang chạy exit. Tương đương với EOF trên Windows là CtrlZ, nhưng cmd.exe không diễn giải điều này đặc biệt khi gõ vào dấu nhắc.


3
Với hầu hết các shell hiện đại, thiết bị đầu cuối không ở chế độ đầu vào chính tắc khi shell đó tương tác chấp nhận đầu vào và Ctrl+Dtrên thực tế chỉ là một ký tự bình thường và không phải là ký tự đặc biệt EOF. Shell liên kết Ctrl+Dvới một hành động GNU Readline hoặc ZLE thoát (nhưng chỉ khi bộ đệm chỉnh sửa dòng trống) nên hành vi chủ yếu là kết quả tương tự. Nhưng không phảiCtrl+D là EOF với hệ vỏ hiện đại, chỉ là một nhân vật điều khiển thông thường. Hành vi khi bộ đệm chỉnh sửa không trống khác biệt rõ rệt với những gì xảy ra với một ký tự đặc biệt EOF.
JdeBP

3
Thật vậy, Windows NT gần nhất tương đương với những gì bashet al. đang thực sự làm là một TCC / LE autoexecuting bàn phím bí danh, chẳng hạn như một này , nơi mà các thông dịch lệnh (không phải là giao diện điều khiển) công nhận tổ hợp phím tắt thông thường ALT+F4 trong soạn thảo dòng và thực hiện được xây dựng trong exitlệnh trong phản ứng.
JdeBP

@JdeBP Ra khỏi đây là điểm khởi đầu, tôi chỉ thử nghiệm điều này với bash 4.4.12 và stty -atrả về icanon(tức là không -icanon). Nhận xét của bạn có With most modern shells, the terminal is not in canonical input mode when the shell is interactively accepting inputthực sự đúng về mặt thống kê tại thời điểm này không?
levant đâm vào

10

Alt- Space. Sau đó , C.

Vâng, nó chậm hơn một chút so với Ctrl- D. Nhưng đây là câu trả lời cho chính xác những gì bạn yêu cầu: chuỗi hành trình phím tương đương tích hợp cho phép bạn thoát khỏi dấu nhắc mà không cần phải gõ exitlệnh. Không cần phần mềm bên thứ ba.

Điều này có thể không hoạt động hoàn toàn giống với bash: bash sẽ chỉ đăng xuất trên một dòng lệnh trống. Trong Windows, điều này có thể đóng cửa sổ, ngay cả khi bạn đã gõ một phần lệnh trên nó.


: D: D: D: D: D: D
Fatih

3

Bạn có thể sử dụng DOSKEY để tạo các macro trong CMD.exe.

Để tạo một loại macro:

DOSKEY [macroname]=[command(s)]

Bằng cách đó bạn có thể liên kết một khóa với một lệnh khác.

Thí dụ:

DOSKEY e=exit

sẽ liên kết evới exitlệnh, vì vậy khi bạn nhập edấu nhắc, nó sẽ giống như bạn nhậpexit

Tôi không chắc chắn nếu bạn có thể sử dụng CTRL- $nkết hợp như macro


Hầu hết các nhân vật điều khiển đều hoạt động tốt (tất nhiên trừ những nhân vật đã được xử lý bởi giao diện điều khiển). Nhưng cmdchỉ diễn giải chúng như các lệnh thông thường, chờ đợi Enterđể được nhấn, do đó không có lợi thế nào trong việc đặt bí danh Ctrl-Z so với chỉ ehoặc x.
grawity

3

Đã sửa lỗi phương pháp autohotkey. (Tôi không thể thêm một bình luận.)

#IfWinActive, ahk_class ConsoleWindowClass
  ^d::
    ; First send ESC, in case we're in select mode.
    Send {Esc}{Esc}exit{Enter}
#IfWinActive

1

Hiện tại có một dự án nguồn mở được gọi là clink tại http://code.google.com.vn/p/clink/ (chỉnh sửa: nó đã được chuyển sang http://mridgers.github.io/clink/ ) - nó mang chức năng đọc đường dẫn Unix đến dấu nhắc lệnh Windows.

Nó hỗ trợ hầu hết các chức năng bao gồm chỉnh sửa dòng lệnh, tìm kiếm lịch sử, hoàn thành tab cùng với các tập lệnh hoàn thành, v.v ... Rất đáng để kiểm tra, làm cho cmd hút ít hơn nhiều. ;]


0

Bạn có thể nhận được hiệu ứng tương tự với đoạn mã AutoHotKey này :

; Close Command Prompt when pressing Ctrl+D
#IfWinActive, Command Prompt$
  ^d::
    ; First send ESC, in case we're in select mode.
    Send {Esc}{Esc}exit{Enter}
#IfWinActive

Dường như không hoạt động, bất kỳ manh mối tại sao?
Avindra Goolcharan

@AvindraGoolcharan: Tôi đã được thông báo, tùy thuộc vào cách bạn khởi động Command Prompt, tiêu đề cửa sổ có thể khác với những gì tôi đã sử dụng trong tập lệnh này. Dòng thứ hai có thể cần điều chỉnh tùy thuộc vào sở thích của bạn.
Der Hochstapler
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.