Що таке запис Vim і як його можна відключити?


761

Я продовжую бачити recordingповідомлення внизу мого вікна gVim 7.2.

Що це таке і як його вимкнути?


55
Щоб назавжди вимкнути запис vim, додайте map q <Nop>у свій .vimrc файл.
Джої Адамс

4
Не можу повірити, що ти хочеш вимкнути запис! Я б показав дійсно дратівливе спливаюче вікно "Ви впевнені?" якщо ви попросите його вимкнути (або, мабуть, хочете дати такі параметри, як оновлення Windows 10 дає).
0xc0de

Відповіді:


1053

Ви починаєте запис, q<letter> і ви можете закінчити його, набравши qще раз.

Запис - це дійсно корисна особливість Vim.

Він записує все, що ви вводите. Потім ви можете відтворити його, просто набравши текст @<letter>. Пошук записів, переміщення, заміна ...

Одна з найкращих особливостей Vim IMHO.


109
Як видно з інших місць, це q, а за ним реєстр. Дійсно класна (і, можливо, неінтуїтивна) частина цього полягає в тому, що це ті самі регістри, які використовуються в таких речах, як видалення, потягнення та введення. Це означає, що ви можете витягнути текст з редактора в реєстр, а потім виконати його як команду.
Каскабель

68
Ще одне, що слід зазначити, ви можете натиснути будь-яке число перед тим, щоб @ відтворити запис, який багато разів на зразок (100 @ <letter>) відтворюватиме ваші дії 100 разів
Tolga E

7
Ви можете додати його згодом, відредагувавши реєстр put / yank. Але я не знаю, чому ви хочете ввімкнути або вимкнути запис як частину макросу. ('q' нічого не впливає при введенні в режимі вставки.)
anisoptera

3
@Wade "- це називається регістром за замовчуванням.
Каскабель

4
and how to turn offтакож було питання
n611x007

103

Введіть, :h recordingщоб дізнатися більше.

                           * q *  * запис * 
q {0-9a-zA-Z "} Записати вписані символи в регістр {0-9a-zA-Z"}
                        (велика літера додати). Команда ' q ' вимкнена
                        під час виконання реєстру , і він не працює всерединівідображення . {Vi: немає запису}

q                        Зупиняє запис . (Примітка до реалізації: " q ", що
                        зупинка запису не зберігається в реєстрі , якщо тільки
                         це не було результатом відображення ) {Vi: немає запису}


                                                        * @ *
@ {0-9a-z ". = *} Виконати вміст регістра {0-9a-z". = *} [Count] 
                        разів. Зауважте, що зареєструйте " % " (назва поточного
                        file) та " # " (ім'я альтернативного файлу) бути не може
                        б / в. Для " @ = " вам буде запропоновано ввести
                         вираз . Результат вираження тоді
                        страчений. Дивіться також | @: |. {Vi: лише названі регістри}


31

Введення qрозпочинає макро запис, а запис припиняється, коли користувач qзнову натискає .

Як згадував Джої Адамс, щоб відключити запис, додайте наступний рядок .vimrcу свій домашній каталог:

map q <Nop>

11
відповідь лише про те, як "відключити" частину питання. Ну, це робить запис недоступним, фактично вимикаючи його - принаймні, ніхто не очікує, що у vi буде окремий потік для цього коду, я думаю, включаючи мене.
n611x007


15

Це означає, що ви перебуваєте в режимі "макрос запису". Цей режим вводиться шляхом введення тексту, qа потім імені реєстру, і його можна вийти, ввівши qзнову.


Він фактично вводиться, ввівши qза ним будь-яке ім’я реєстру, яке становить 0-9, az, AZ та ".
ephemient

3
Насправді це q {0-9a-zA-Z "} - ви можете записати макрос у будь-який реєстр (названий цифрою, літерою"). У випадку, якщо ви дійсно хочете його використовувати ... Ви виконайте вміст реєстру за допомогою @ <register>. Дивіться, :help qі :help @якщо вам цікаво його використовувати.
Каскабель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.