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-backward
widget en el emacs
mapa 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 bindkey
comando:
bindkey "^R" history-incremental-search-backward
Ni siquiera tiene que usar el zle
comando 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-backward
widget. La diferencia entre este widget y el history-incremental-search-backward
widget 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-backward
alterna entre los mapas de teclas main
y vicmd
cuando invoca el vi-cmd-mode
widget mientras permanece en modo de búsqueda. es decir, desde el emacs
modo presionando la Esctecla o las teclas Ctrl+ XCtrl+ Valterna el modo de búsqueda entre los mapas de teclas emacs
y vicmd
. (Invocar history-incremental-search-backward
desde el vicmd
mapa de teclas es, por lo tanto, problemático, a menos que también enlace algo vi-cmd-mode
en el vicmd
mapa de teclas).
- El modo de búsqueda
vi-history-search-backward
trata el vi-cmd-mode
widget como accept-line
y 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-backward
y los vi-rev-repeat-search
widgets 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-search
se reconoce el widget. es decir (suponiendo que ha alterado los enlaces como se indicó anteriormente) Ctrl+ Rprovocará un pitido y será ignorado.
garyjohn
muestra una forma de Vim de hacerlo yJdeBP
muestra 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!