问题
I've been trying to find something that will let me run multiple commands on the same line in vim, akin to using semicolons to separate commands in *nix systems or & in windows. Is there a way to do this?
回答1:
A bar | will allow you to do this. From :help :bar
'|'can be used to separate commands, so you can give multiple commands in one line. If you want to use'|'in an argument, precede it with'\'.
Example:
:echo "hello" | echo "goodbye"
Output:
hello
goodbye
NB: You may find that your ~/.vimrc doesn't support mapping |, or \|. In these cases, try using <bar> instead.
回答2:
Put <CR> (Carriage Return/Enter) between and after commands. For example:
map <F5> :w<CR>:!make && ./run<CR>
Don't use | because:
Some commands have problems if you use
|after them|does not work consistently in configuration files, see:help map_bar
回答3:
You could define a function that executes your commands.
function Func()
:command
:command2
endfunction
And place this in, for example, your vimrc. Run the function with
exec Func()
回答4:
The command seperator in vim is |.
回答5:
I've always used ^J to separate multiple commands by pressing Ctrl+v, Ctrl+j.
回答6:
Thought this might help someone trying to do substitutions in a chain and one fails
from a comment
% s/word/newword/ge | % s/word2/newword2/ge
You can use the e flag to ignore the error when the string is not found.
回答7:
You can create a new file, and write your commands on it. Then :so %, which means source current file.
来源:https://stackoverflow.com/questions/3249275/vim-multiple-commands-on-same-line