On 02/20/2013 03:12 PM, Ben Fritz wrote:
On Wednesday, February 20, 2013 1:35:16 PM UTC-6, ping wrote:
On 02/20/2013 02:30 PM, Ben Fritz wrote:
On Wednesday, February 20, 2013 1:14:14 PM UTC-6, ping wrote:
nn ,gg :call MyGit("new post:")
what's the problem?
nn, or :nnoremap, is a mapping from normal mode. So, all characters on the
right-hand side will be executed by Vim as if you typed them from normal mode.
In other words, Vim will enter the command line when it "types" the ':'
character, inserts the rest of the line on the command line, and then...does nothing,
because there is nothing else in the mapping for it to do.
Follow up your mapping with "<CR>" or "<Enter>" to tell Vim to send the enter
key for you.
I.e. you mapping should be:
nn ,gg :call MyGit("new post:")<CR>
I just tested, no luck still...
//code:
function! MyGit(commitmsg)
let commitmsg=a:commitmsg
let GitCmd=":
\!git add -A .;
\!git commit -m " .
\commitmsg . ";" . "
\!git push origin master" .
\repeat("\<left>", 30)
exec GitCmd
endf
command! -nargs=? MyGit :call MyGit(<q-args>)
nn ,gg :call MyGit("new post:")<CR>
//result:
Error detected while processing function MyGit:
line 8:
E34: No previous command
Press ENTER or type command to continue
so that repeat thing still confuses me...
You said your problem was that Vim would put a bunch of stuff on your command
line but not actually hit enter for you.
Now you are beyond that issue and ran into another problem.
Strings in Vim cannot be split over multiple lines.
Instead of this (which will not work):
let mystring = ":
\ abc
\ def"
You need to do this:
let mystring = ":"
\ ."abc"
\ ."def"
However, looking at what you are trying to do, this STILL will not work. You
have at least two other conceptual problems:
1. You cannot string together commands like :!command1 !command2. No Vim command works that way,
you need to separate them with |. :! is special though so that even that won't work, because it
will just get passed to the shell. You need to do it like :exec "!command1" | exec
"!command2".
2. :exec will not leave the cursor somewhere for input. You can't use a function in this way. If
you want to use <Left><Left> repeatedly to place the cursor awaiting further input,
you will need to have your function RETURN a value instead of executing it, and additionally use
an expression map or abbreviation. See :help :map-<expr>
and, this just works - the only issue is I don't know how to repeat the
<left> here..
and, I really really don't understand how come this works but the
function version doesn't ...
confusing...
nn ,gg :!git add -A .;git commit -m "msg: ";git push origin master"<left>
--
--
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
---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.