Repetindo o comando para executar um script externo?
Eu tenho um script chamado lorem.shque pega o número de parágrafos (primeiro argumento) e o número de linhas em cada parágrafo (segundo argumento) e imprime um texto aleatório nesse formato para padronizar. Transformei isso em uma vinculação de chave do vim para que pudesse inserir esse texto em meu arquivo com:
nmap <leader>l :read ! ~/lorem.sh 1 100<CR>
Isso funciona, mas eu queria saber se seria possível adicionar uma contagem a este comando da mesma forma que você pode especificar uma contagem para outros comandos, como Nddexcluir N linhas abaixo do atual. Se eu pudesse ter algo como N<leader>ltrabalho, poderia inserir N parágrafos de texto de uma vez.
Obrigado !
Respostas
Baseado em :help v:count:
*v:count* *count-variable*
v:count The count given for the last Normal mode command. Can be used
to get the count before a mapping. Read-only. Example: >
:map _x :<C-U>echo "the count is " . v:count<CR>
< Note: The <C-U> is required to remove the line range that you
get when typing ':' after a count.
When there are two counts, as in "3d2w", they are multiplied,
just like what happens in the command, "d6w" for the example.
Also used for evaluating the 'formatexpr' option.
"count" also works, for backwards compatibility, unless
|scriptversion| is 3 or higher.
*v:count1* *count1-variable*
v:count1 Just like "v:count", but defaults to one when no count is
used.
Você quer
nnoremap <leader>l :execute 'read !~/lorem.sh' v:count1 '100'<CR>
(Observe que estou usando nnoremap; este é um bom hábito.)