On 2/17/2013 11:39 AM, Paul Isambert wrote:
hi Paul:I usually work in some a long , but organized text file. and sometime I really want to quickly put some really good texts that I'm editing/viewing into a blog post and publish it. currently I have to: 1) visual select the texts that i want to post 2) copy them into a new buffer 3) add some yaml front matter stuff like the following: --- layout: post title: "github/jeklly notes" description: "" category: tags: [] --- {% include JB/setup %} 4) save them as a md file into the _post folder what is the best vim-way to automate these?I'd say, again, write a command/function, e.g.: function! s:Post (fname) range exe a:firstline . "," . a:lastline . "yank" exe "tabnew /path/to/your/dir/" . a:fname . ".md" call append(0, ["Some", "lines", "of", "text."]) normal p endfunction com! -nargs=1 Post call s:Post(<q-args>) Best, Paul
Thanks for the good sample code.
I spend some time to develop it into my need, I found 2 small (but key) issues here:
1) to make command support range, it seems i need to add "-range":
com! -nargs=1 Post call s:Post(<q-args>)
2) even with that, I still can't catch the selected text range, but instead my test shows only 1st line(or "current") line
is yanked. so I tried this:
com! -range=% -nargs=1 Post :<line1>,<line2>call Post(<q-args>)
now it seems to work.
so it seems that to support "range" in command -- a common usage is to pass that range into a called func (also ranged),
that 2 elements can't be ignored...
not sure my understanding is correct or I still miss anything here?
regards
ping
No comments:
Post a Comment