Ghi âm Vim là gì và làm thế nào nó có thể bị vô hiệu hóa?


761

Tôi tiếp tục nhìn thấy recordingthông báo ở dưới cùng của cửa sổ gVim 7.2 của tôi.

Nó là gì và làm thế nào để tôi tắt nó?


55
Để tắt ghi vim cho tốt, hãy thêm map q <Nop>vào tệp .vimrc của bạn.
Joey Adams

4
Tôi không thể tin rằng bạn muốn tắt ghi âm! Tôi sẽ hiển thị một cửa sổ bật lên thực sự khó chịu 'Bạn có chắc không?' nếu ai đó yêu cầu tắt nó đi (hoặc có thể muốn cung cấp các tùy chọn như bản cập nhật Windows 10 cung cấp).
0xc0de

Câu trả lời:


1054

Bạn bắt đầu ghi âm q<letter> và bạn có thể kết thúc nó bằng cách gõ qlại.

Ghi âm là một tính năng thực sự hữu ích của Vim.

Nó ghi lại mọi thứ bạn gõ. Sau đó bạn có thể phát lại nó đơn giản bằng cách gõ @<letter>. Ghi lại tìm kiếm, di chuyển, thay thế ...

Một trong những tính năng tốt nhất của Vim IMHO.


109
Như đã thấy những nơi khác, đó là q theo sau là một đăng ký. Một phần thực sự thú vị (và có thể không trực quan) của điều này là đây là những thanh ghi giống nhau được sử dụng bởi những thứ như xóa, yank và put. Điều này có nghĩa là bạn có thể kéo văn bản từ trình soạn thảo vào một thanh ghi, sau đó thực thi nó dưới dạng một lệnh.
Cascabel

68
Một điều nữa cần lưu ý là bạn có thể nhấn bất kỳ số nào trước @ để phát lại bản ghi mà nhiều lần như (100 @ <letter>) sẽ phát hành động của bạn 100 lần
Tolga E

7
Bạn có thể thêm nó sau đó, bằng cách chỉnh sửa thanh ghi bằng put / yank. Nhưng tôi không biết tại sao bạn muốn bật hoặc tắt ghi âm như một phần của macro. ('q' không ảnh hưởng đến bất cứ điều gì khi được nhập ở chế độ chèn.)
anisoptera

3
@Wade "- nó được gọi là thanh ghi mặc định.
Cascabel

4
and how to turn offcũng là câu hỏi
n611x007

103

:h recordingđể tìm hiểu thêm.

                           * q *  * ghi * 
q {0-9a-zA-Z "} Ghi lại các ký tự đã nhập vào thanh ghi {0-9a-zA-Z"}
                        (viết hoa để viết thêm). Lệnh ' q ' bị vô hiệu hóa
                        trong khi thực hiện một đăng ký , và  không hoạt động bên trong
                        một bản đồ . {Vi: không ghi âm}

q                        Dừng ghi âm . (Ghi chú thực hiện: ' q ' mà
                        dừng ghi không được lưu trong thanh ghi , trừ khi
                         đó là kết quả của ánh xạ ) {Vi: không ghi}


                                                        * * *
@ {0-9a-z ". = *} Thực hiện nội dung của thanh ghi {0-9a-z". = *} [Đếm] 
                        lần. Lưu ý rằng đăng ký ' % ' (tên của hiện tại
                        tệp) và ' # ' (tên của tệp thay thế) không thể là
                        đã sử dụng. Đối với " @ = ", bạn được nhắc nhập một
                         biểu thức . Kết quả của biểu thức là
                        Thực thi. Xem thêm | @: |. {Vi: chỉ các thanh ghi có tên}


31

qbắt đầu ghi macro và ghi âm dừng khi người dùng nhấn qlại.

Như Joey Adams đã đề cập, để tắt ghi âm, hãy thêm dòng sau .vimrcvào thư mục chính của bạn:

map q <Nop>

11
chỉ trả lời về phần "cách tắt" của câu hỏi. Chà, nó làm cho việc ghi âm không thể truy cập, tắt nó một cách hiệu quả - ít nhất là không ai mong muốn vi có một luồng riêng cho mã này, tôi đoán, bao gồm cả tôi.
n611x007


15

Điều đó có nghĩa là bạn đang ở chế độ "ghi macro". Chế độ này được nhập bằng cách gõ qtheo sau là tên đăng ký và có thể được thoát bằng cách gõ qlại.


Nó thực sự bước vào bằng cách gõ qtiếp theo bất kỳ tên đăng ký, đó là 0-9, az, AZ, và".
ephemient

3
Trên thực tế, đó là q {0-9a-zA-Z "} - bạn có thể ghi một macro vào bất kỳ thanh ghi nào (được đặt tên theo chữ số, chữ cái,"). Trong trường hợp bạn thực sự muốn sử dụng nó ... bạn thực hiện nội dung của một thanh ghi với @ <register>. Xem :help q:help @nếu bạn quan tâm đến việc sử dụng nó.
Cascabel
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.