Por supuesto, ya no puedes usar Ctrl+ R. Si consulta el manual de Z Shell, verá que solo hay un enlace de teclas para el history-incremental-search-backwardwidget en el emacsmapa de teclas . No hay enlaces de teclas para ello en los mapas de teclas vi.
Pero como también encontrará al leer el manual (Es el capítulo 18.), agregar una combinación de teclas es un ejercicio bastante simple en el uso del bindkeycomando:
bindkey "^R" history-incremental-search-backward
Ni siquiera tiene que usar el zlecomando para asignar el widget a una función de shell, ya que este es un widget estándar.
Si consulta la respuesta a esta misma pregunta que está en el wiki de Z Shell , verá los comandos para agregar específicamente esto a los mapas de teclas vi "comando" y "modo de inserción":
bindkey -M viins '^R' history-incremental-search-backward
bindkey -M vicmd '^R' history-incremental-search-backward
También tenga en cuenta que, como señala garyjohn , en el mapa de teclas vi "comando", el /carácter está vinculado al vi-history-search-backwardwidget. La diferencia entre este widget y el history-incremental-search-backwardwidget es el comportamiento del widget que se aplica una vez que uno está en modo de búsqueda de historial. Estas son algunas de las diferencias que notará:
- Cambio de modos vi:
- El modo de búsqueda
history-incremental-search-backwardalterna entre los mapas de teclas mainy vicmdcuando invoca el vi-cmd-modewidget mientras permanece en modo de búsqueda. es decir, desde el emacsmodo presionando la Esctecla o las teclas Ctrl+ XCtrl+ Valterna el modo de búsqueda entre los mapas de teclas emacsy vicmd. (Invocar history-incremental-search-backwarddesde el vicmdmapa de teclas es, por lo tanto, problemático, a menos que también enlace algo vi-cmd-modeen el vicmdmapa de teclas).
- El modo de búsqueda
vi-history-search-backwardtrata el vi-cmd-modewidget como accept-liney finalizará la búsqueda, volviendo a ingresar el modo de comando desde el que ingresó la búsqueda. es decir (con los enlaces predeterminados) /ingresa al modo de búsqueda desde el modo de comando y Escvuelve al modo de comando.
- Repetir una búsqueda:
- En
history-incremental-search-backward, tanto el history-incremental-search-backwardy los vi-rev-repeat-searchwidgets son reconocidos. es decir (suponiendo que ha alterado los enlaces como se indicó anteriormente) ambos Ctrl+ Ry Nbuscará una línea coincidente anterior.
- En
vi-history-search-backward, solo vi-rev-repeat-searchse reconoce el widget. es decir (suponiendo que ha alterado los enlaces como se indicó anteriormente) Ctrl+ Rprovocará un pitido y será ignorado.
garyjohnmuestra una forma de Vim de hacerlo yJdeBPmuestra cómo recuperar la combinación de teclas para Ctrl + R. Voy a jugar con ambos métodos y aceptaré una respuesta más tarde. Decidiré en base a 1) qué método me parece más fácil y 2) cuál recibe más votos a favor. ¡Gracias a los dos!