specifying a register»,
sent 19:01:33 12 February 2011, Saturday
by Scott Steele:
> I'd like to be able to edit those 5 lines:
> 5 <THE-KEY> A " # Great line<ESC>" j <THE-KEY>
>
> It would save 3 keystrokes, which isn't a lot; but for a short edit-
> movement combo like that, it'd be pretty convenient.
There is not, but you can of course write it by yourself:
let s:lastcount=0
function s:NewMacro()
if !s:lastcount
let s:lastcount=v:count1
return 'qv'
else
try
return 'q'.(((s:lastcount-1)>0)?((s:lastcount-1).'@v'):(''))
finally
let s:lastcount=0
endtry
endif
endfunction
nnoremap <expr> Q <SID>NewMacro()
> It'd also be nice
> to not have to remember which registers are still free to assign a
> macro to and to not have to add the macro register to my working
> memory (brain memory not computer memory) since having to remember
> something short-term like that significantly reduces mental
> efficiency.
Why do you have problems with remembering which registers are in use? You don't
have to: unless you write a recursive macro this does not matter. I just use
register @a every time I want to write a macro. If I want to write a recursive
one, I can do «qaq» in normal mode to make it empty.
Original message:
> Looked through help files and couldn't find how this is done (or if it
> can be done) in vim.
>
> Example:
> If I want to append " # Great line!" to five consecutive lines, I know
> that I can do it with:
> q a A " # Great line!<ESC>" j q 4 @ a
> (i.e. I create a macro that edits a line and moves to the next line,
> and then I tell the macro to run 4 more times.)
>
> But if I really don't want to create a macro and have to call it, is
> there something like lambda for macros? I'm thinking that I'm looking
> for a specific key. Referring to that key as <THE-KEY>, this is how
> I'd like to be able to edit those 5 lines:
> 5 <THE-KEY> A " # Great line<ESC>" j <THE-KEY>
>
> It would save 3 keystrokes, which isn't a lot; but for a short edit-
> movement combo like that, it'd be pretty convenient. It'd also be nice
> to not have to remember which registers are still free to assign a
> macro to and to not have to add the macro register to my working
> memory (brain memory not computer memory) since having to remember
> something short-term like that significantly reduces mental
> efficiency.
>
> I don't know why the special key couldn't just be q when it is
> preceded by [count]. (Preceding q by [count] doesn't currently have
> any effect in vim, does it?)
>
> Thanks!
>
> Scott
No comments:
Post a Comment