No vimrc, como posso encadear várias instruções em um comando de Líder

0

No meu .vimrc eu tenho:

map <Leader>c :GitGutterToggle<CR>
map <Leader>n :set invnumber<CR>

Existe alguma maneira de combinar esses dois em uma entrada Leader?

Por exemplo:

map <Leader>c :GitGutterToggle && :set invnumber<CR>

Eu tentei o acima e suas variações, sem sucesso.

Obrigado.

    
por Kevin 16.04.2017 / 17:40

1 resposta

1

O vim usa | para ex-comandos de cadeia. De :h cmdline-lines :

                                                        :bar :\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 '\'.

These commands see the '|' as their argument, and can therefore not be
followed by another Vim command:

Isto é seguido por uma lista de comandos, os quais não incluem incluem :map ou suas variantes. Então, você precisará usar \| . Mais adiante, a ajuda é uma observação sobre :map , que leva a :h map_bar :

                                                        map_bar map-bar
Since the '|' character is used to separate a map command from the next
command, you will have to do something special to include  a '|' in {rhs}.
There are three methods:
   use       works when                    example      
   <Bar>     '<' is not in 'cpoptions'     :map _l :!ls <Bar> more^M
   \|        'b' is not in 'cpoptions'     :map _l :!ls \| more^M
   ^V|       always, in Vim and Vi         :map _l :!ls ^V| more^M

(here ^V stands for CTRL-V; to get one CTRL-V you have to type it twice; you
cannot use the <> notation "<C-V>" here).

All three work when you use the default setting for 'cpoptions'.

Então, supondo que você não tenha modificado cpoptions :

map <Leader>c :GitGutterToggle <bar> :set invnumber<CR>

Observe que você deve usar noremap (e os mais específicos nnoremap , vnoremap , etc) mapear comandos para que você não fique surpreso com seus mapeamentos.

    
por muru 17.04.2017 / 08:21