Estendendo Mapeamentos Vim para Executar N Times

2

Eu quero poder digitar algo como 'Ncom' no modo normal que comente as linhas atuais e, em seguida, as próximas N-1. Um mapeamento de chaves que eu fiz para fazer isso é, %código%. Isto de fato comenta a linha atual, mas não funciona para N linhas de maneira similar aos comandos vim embutidos. O que preciso saber sobre o vim que explicará a lacuna entre o que quero que aconteça e o que está acontecendo? Além disso, como posso implementar corretamente o que eu quero?

    
por seewalker 12.05.2013 / 21:00

2 respostas

2

:nnoremap com :normal! I#<CR>

Explicação…

  • I é o mesmo que ^i , mas melhor. Geralmente, você deve fazer o seguinte em vez de ^i#<Esc> :

    I#<Esc>
    

    Mesmo para $a , a propósito.

  • :normal é um comando Ex que permite executar um comando de modo normal a partir da linha de comando. É usado assim, seguido por <CR> :

    :normal! I#
    
  • Quando um comando de modo normal é prefixado com um count : 6w , o comando é executado 6 vezes. No entanto, o count não é propagado para comandos subsequentes: 6wifoo não adiciona foo antes de cada uma das 6 próximas palavras. Dependendo do comando, as regras podem variar: consulte a documentação se você não tiver certeza.

  • Quando um comando Ex é prefixado com um count : 6:command , o Vim adiciona automaticamente um intervalo a partir da linha atual e termina com a linha count-1 th abaixo. Se você fizer 6:normal! I# , o comando se torna:

    :.,.+5normal! I#
    

    que significa "insira um # antes do primeiro caractere imprimível desta linha e as 5 linhas abaixo".

  • Quando o Vim se depara com um comando Ex em um mapeamento, com um : , ele sempre adiciona o intervalo relevante. É por isso que é melhor usar :normal em mapeamentos que devem ser usados em várias linhas ou com count .

Veja :help range e :help :normal .

    
por 12.05.2013 / 21:45
0

Acho que esse plug-in faz o trabalho: link

exemplo:

silent! call repeat#set("\<Plug>MyWonderfulMap", v:count)
    
por 13.05.2013 / 18:50

Tags