docs: def _create_key_manager(self, get_match_fuzzy, set_match_fuzzy,
                              get_enable_vi_bindings, set_enable_vi_bindings,
                              get_show_completion_columns,
                              set_show_completion_columns,
                              get_show_help, set_show_help,
                              stop_input_and_refresh_cli):
          """Create and initialize the keybinding manager.
  
          :type get_fuzzy_match: callable
          :param get_fuzzy_match: Gets the fuzzy matching config.
  
          :type set_fuzzy_match: callable
          :param set_fuzzy_match: Sets the fuzzy matching config.
  
          :type get_enable_vi_bindings: callable
          :param get_enable_vi_bindings: Gets the vi (or emacs) key bindings
              config.
  
          :type set_enable_vi_bindings: callable
          :param set_enable_vi_bindings: Sets the vi (or emacs) key bindings
              config.
  
          :type get_show_completion_columns: callable
          :param get_show_completion_columns: Gets the show completions in
              multiple or single columns config.
  
          type set_show_completion_columns: callable
          :param set_show_completion_columns: Sets the show completions in
              multiple or single columns config.
  
          :type get_show_help: callable
          :param get_show_help: Gets the show help pane config.
  
          :type set_show_help: callable
          :param set_show_help: Sets the show help pane config.
  
          :type stop_input_and_refresh_cli: callable
          param stop_input_and_refresh_cli: Stops input by raising an
              `InputInterrupt`, forces a cli refresh to ensure certain
              options take effect within the current session.
  
          :rtype: :class:`prompt_toolkit.KeyBindingManager`
          :return: A custom `KeyBindingManager`.
  
          """
          assert callable(get_match_fuzzy)
          assert callable(set_match_fuzzy)
          assert callable(get_enable_vi_bindings)
          assert callable(set_enable_vi_bindings)
          assert callable(get_show_completion_columns)
          assert callable(set_show_completion_columns)
          assert callable(get_show_help)
          assert callable(set_show_help)
          assert callable(stop_input_and_refresh_cli)
          self.manager = KeyBindingManager(
              enable_search=True,
              enable_abort_and_exit_bindings=True,
              enable_system_bindings=True,
              enable_auto_suggest_bindings=True,
              enable_open_in_editor=False)
  
          @self.manager.registry.add_binding(Keys.F2)
          def handle_f2(_):
              """Toggle fuzzy matching.
  
              :type _: :class:`prompt_toolkit.Event`
              :param _: (Unused)
  
              """
              set_match_fuzzy(not get_match_fuzzy())
  
          @self.manager.registry.add_binding(Keys.F3)
          def handle_f3(_):
              """Toggle Vi mode keybindings matching.
  
              Disabling Vi keybindings will enable Emacs keybindings.
  
              :type _: :class:`prompt_toolkit.Event`
              :param _: (Unused)
  
              """
              set_enable_vi_bindings(not get_enable_vi_bindings())
              stop_input_and_refresh_cli()
  
          @self.manager.registry.add_binding(Keys.F4)
          def handle_f4(_):
              """Toggle multiple column completions.
  
              :type _: :class:`prompt_toolkit.Event`
              :param _: (Unused)
  
              """
              set_show_completion_columns(not get_show_completion_columns())
              stop_input_and_refresh_cli()
  
          @self.manager.registry.add_binding(Keys.F5)
          def handle_f5(_):
              """Toggle the help container.
  
              :type _: :class:`prompt_toolkit.Event`
              :param _: (Unused)
  
              """
              set_show_help(not get_show_help())
              stop_input_and_refresh_cli()
  
          @self.manager.registry.add_binding(Keys.F9)
          def handle_f9(event):
              """Switch between the default and docs buffers.
  
              :type event: :class:`prompt_toolkit.Event`
              :param event: Contains info about the event, namely the cli
                  which is used to changing which buffer is focused.
  
              """
              if event.cli.current_buffer_name == u'clidocs':
                  event.cli.focus(u'DEFAULT_BUFFER')
              else:
                  event.cli.focus(u'clidocs')
  
          @self.manager.registry.add_binding(Keys.F10)
          def handle_f10(event):
              """Quit when the `F10` key is pressed.
  
              :type event: :class:`prompt_toolkit.Event`
              :param event: Contains info about the event, namely the cli
                  which is used for exiting the app.
  
              """
              event.cli.set_exit()