как vim сопоставляет две команды

#vim

#vim

Вопрос:

Мне интересно, как использовать одну горячую клавишу, сопоставляющую две команды в vim. для exmpale у меня уже есть эти два сопоставления

 map <silent> <F7> zM
map <silent> <F8> zR
  

Но я просто хочу использовать F8 для переключения между zM и zR.
Надеюсь, кто-нибудь может дать мне решение.
Большое спасибо.

Ответ №1:

Не будет ли zA делать то, что вы хотели …?

Если этого не произойдет, нам нужно пойти глубже. http://www.vim.org/scripts/script.php?script_id=1494 говорит вам, что делать, вот соответствующий скрипт:

 map <buffer> F8 :call ToggleFold()<CR> 
let b:folded = 1 
function! ToggleFold() 
  if( b:folded == 0 ) 
      exec "normal! zM" 
      let b:folded = 1 
  else 
      exec "normal! zR" 
      let b:folded = 0 
  endif 
endfunction 
  

Комментарии:

1. на самом деле, zA уже сопоставлен с <пробелом> , но он переключает только один раз. Я имею в виду, я хочу переключить все сгибы. (zA этого не делает)

2. Отредактировал мой ответ, чтобы учесть ваше пожелание.