¿Cómo me deshago de la cadena "predeterminada" (última vez utilizada) en algunas funciones de emacs?


12

Tengo el siguiente problema: cuando uso 'Cx rt' (cadena-rectángulo), se me solicita que ingrese alguna cadena para reemplazar el rectángulo seleccionado. Digamos que escribo ";;" (para comentar el rectángulo). Esto funciona bien, pero la próxima vez que llame a la misma función y quiera reemplazarla por nada (cadena vacía), no puedo hacer eso, porque hay una cadena "predeterminada" ;; " que utilicé anteriormente, y si presiono enter, el comando usará ese ";;" cadena en lugar de una vacía. ¿Cómo lo configuro para vaciar la cadena?

Problema similar que tuve con algunas funciones de búsqueda / reemplazo. Básicamente, cuando recuerda la última cadena que utilicé y la establece en predeterminada, ¿cómo puedo "ingresar" una cadena vacía?

EDITAR:

Kill-rectangle, mencionado por YoungFrog resuelve el problema específico, pero tenía otra cosa en mente: básicamente, en cualquier función, emacs recuerda el último valor que ingresó y lo usa como "predeterminado" cuando presiona enter, debería estar capaz de borrar ese "valor predeterminado" de lo que era el valor predeterminado real antes de utilizar la función por primera vez. Aquí hay otro ejemplo:

En modo directo, si 'Mx rgrep' le pide 3 entradas:

1) Qué buscar: lo que ingrese aquí, se usará como predeterminado la próxima vez que use rgrep. Como alguien señaló, no tiene sentido buscar una cadena vacía, por lo que no es necesario borrar este valor "predeterminado".

2) A continuación se le preguntará en qué archivos buscar. Su valor predeterminado real es "todos" los archivos. Si ingreso * .txt y busco, la próxima vez que use rgrep, * .txt se usará como "predeterminado". Ahora deseo borrar este "default" * .txt y volver a su valor predeterminado original, "all", tal como quería borrar ";;" "default" en la función string-rectangle a su valor predeterminado real, string vacío.

Por supuesto, este problema específico para todos los archivos probablemente podría resolverse escribiendo *? Pero este problema general persiste con otros comandos que recuerdan el último valor utilizado.

3) Luego pedirá el directorio Base, no hay problema aquí.

Entonces, tal como lo veo, cada vez que emacs intenta ayudarme recordando mi último valor usado en algún comando (que encuentro muy útil la mayor parte del tiempo) debería haber una forma de borrar ese valor usado como si nunca hubiera usado ese comando antes.

PD: Todavía soy nuevo en emacs, y tal vez la funcionalidad que requiero no es necesaria, ya que siempre hay alguna solución.


1
Creo que es difícil, porque la lectura y el intercambio del valor predeterminado para la cadena vacía no ocurre en la misma función en la mayoría de los casos. En este caso específico delete-rectanglees una opción.
politza

Si tiene la intención de insertar espacios en el rectángulo seleccionado, puede usar clear rectangle.
Kaushal Modi

Si simplemente desea bloquear comentarios / comentarios, ¿por qué no usarlos comment-dwim? También ingresar cadena "vacía" para la búsqueda no tendría sentido, pero puede ingresar una cadena vacía para la parte de reemplazo. Tengo curiosidad por ver más ejemplos en los que un usuario podría necesitar ingresar una cadena vacía.
Kaushal Modi

3
Acabo de ver su descripción rápidamente, pero parece que puede haber un problema con el diseño del comando string-rectangle. Siempre que una cadena vacía tenga sentido como una posible entrada, debe haber una forma de ingresarla, a diferencia de aceptar un valor predeterminado. Mire detenidamente el documento para el comando (y su código fuente, si se siente cómodo con eso), para ver si de hecho hay una falla de diseño aquí. Si le parece que, a continuación, por favor repórtelo: M-x report-emacs-bug.
Dibujó

Para 2), literalmente all, puede ingresar , que es ligeramente diferente de *: coincide .*también.
npostavs

Respuestas:


3

No use C-x r t( string-rectangle), use C-x r k( kill-rectangle) en su lugar.


1
Solo respondí el ejemplo específico dado porque, en mi opinión, el caso general (la pregunta en el título) no admite respuesta (general). Aún así, quiero mencionar que C-j(en lugar de RET) podría ayudar en algunos casos, por ejemplo, ido-mode.
YoungFrog

3

En el caso general, lo que quieres no se puede lograr. Esto se debe a que varias utilidades y modos en Emacs almacenan su historial de finalización de lectura en diferentes variables, no en una ubicación. Puede establecer manualmente esas variables del historial en nil(por C-x r tejemplo, (setq string-rectangle-history nil)), pero no se escala. Tampoco es fácil descubrir los nombres de las variables del historial sin leer el código.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.