On Thu, 3 Mar 2011, Benjamin R. Haskell wrote:

On Thu, 3 Mar 2011, Sapfeer wrote:

Dear all,
I want to create a command that will insert comment mark, for instance '#', space, date and time on the next line after current, but AFAICS there is no way to put insert commands like o in command. The most obvious way - use mapping, but it is preferable to use command feature

You don't want to use the o command, because that leaves you in insert mode. You're looking for the append() function:

command TimedComment :call append(line('.'), '# '.strftime('%Y-%m-%d %H:%M:%S'))

Another common idiom, if the comment you want to insert gets complex, is to create a function, then call the function from a command.

E.g. Convert2HTML() is a function that converts a specified range to HTML in a new buffer:

command -range=% TOhtml :call Convert2HTML(<line1>, <line2>)


Forgot to add... I much prefer doing this via abbreviations:

E.g. in languages that support C-style comments:

==> ~/.vim/plugin/eatchar.vim <==
" similar to one from the vim docs
fun! Eatchar(...)
        let c = nr2char(getchar(0))
        return c =~ (a:0 ? a:1 : '\s') ? '' : c
endfun
=================================

==> ~/.vim/after/ftplugin/php.vim <==
iabb /t /* TODO - bhaskell - <C-R>=strftime('%Y-%m-%d')<CR> - 
*/<left><left><C-R>=Eatchar()<CR>
=====================================

Then, when writing PHP code, I can type /t<space> to insert a dated TODO comment (ending up in insert mode with the cursor at the position indicated by '^'):

/* TODO - bhaskell - 2011-03-03 - ^*/

--
Best,
Ben

--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Reply via email to