2014-12-20 4 views
2

Я пытаюсь сохранить макрос vim, который включает символ backspace в мой файл vimrc. Идея этого макроса заключается в добавлении сегмента документации в файл js. Так что, если у меня есть следующие функции:Vim macro with backspace

function foo() { 
} 

я поставить курсор на функцию линии, запустите макрос, и он будет создавать:

function foo() { 
    /* 
    | <- Cursor ends up here in insert mode. 
    */ 
} 

Когда я создал макрос, я получил следующее регистр:

o/*^M<80>kb<80>kb<80>kb*/<80>ku^M<80>kb<80>kb<80>kb 

(< 80> представляет собой один символ)

Я попробовал dding это как команду, пусть:

let a='o/*^M<80>kb<80>kb<80>kb*/<80>ku^M<80>kb<80>kb<80>kb' 

, но когда я запускаю его он просто печатает:

function foo() { 
    /*^M<80>kb<80>kb<80>kb*/<ESC>O<80>kb<80>kb<80>kb 
} 

Есть некоторые спасаясь, что я не хватает? Может быть, есть другой и лучший способ сделать это?

ответ

2

Тех <80>kb являются внутренним кодом ключа для забоя. Замените каждый \<BS> (и напишите ^M как \<CR>), и положите всю строку макроса в двойные кавычки, и вам должно быть хорошо идти.

Кроме того, чтобы назначить для регистрации a, вам необходимо использовать @a.

+0

Это именно то, что я искал! Я не смог найти код для backspace –

+0

См. ': H key-notation'. –

2

Все эти <80>kb не имеют значения: они используются внутри фирмы Vim, но они вам вообще не нужны.

Имейте в виду, что макрос - это не что иное, как серия нажатий клавиш. Если вы знаете, что вы делаете, действительно не сложно «концептуализировать» ваши действия/нажатия клавиш и записывать их непосредственно без шаг записи или даже без Vim. Это то, что все завсегдатаи здесь или на #vim сделать: Вим быть язык, вы должны думать только о мерах, необходимых для достижения этой цели, и у вас есть макрос:

o/*^M*/^[O 

o open a new line below the current line 
/* insert /* 
^M insert a line break 
*/ insert */ 
^[ go back to normal mode 
O open a new line above the current line 

Чтобы использовать этот макрос в функции используйте :normal команду, которая позволяет выполнять команды нормальный режим из командной строки или из vimscript контекста:

:norm! o/*^M*/^[O 

используйте этот макрос непосредственно в отображении:

nnoremap <key> o/*^M*/^[O 

Чтобы сохранить этот макрос в вашем ~/.vimrc:

let @a = "o/*^M*/^[O" 

и нажмите @a.

Важное напоминание:

^M is obtained with <C-v><CR> 
^[ is obtained with <C-v><Esc> 

Ссылка:

:help recording 
:help registers 
:help :normal 
:help i_ctrl-v