2011-09-26 18 views
7

Tengo un archivo UTF-8 que contiene algunos caracteres Unicode como ANULACIÓN IZQUIERDA A DERECHA (U + 202D) que deseo eliminar del archivo. En Emacs, están ocultos (¿cuál debería ser el comportamiento correcto?) De forma predeterminada. ¿Cómo puedo hacer que esos caracteres Unicode "exóticos" sean visibles (sin cambiar la visualización de caracteres Unicode "regulares" como diéresis alemanes)? Y cómo puedo reemplazarlos después (con replace-string por ejemplo. C-X 8 Ret no funciona para isearch/replace-string).Resaltado y reemplazo de caracteres Unicode no imprimibles en Emacs

En Vim, es bastante fácil: Estos caracteres se muestran con su representación hexadecimal por defecto (¿es esto un error o una característica que falta?) Y puede eliminarlos fácilmente con :%s/\%u202d//g por ejemplo. Esto debería ser posible con Emacs?

Respuesta

9

Puede hacer M-x find-file-literally y verá estos caracteres.

A continuación, se pueden quitar usando habitual string-replace

+1

Obtengo los mismos resultados para los caracteres con 'toggle-enable-multibyte-characters', pero el problema es que no quiero verlos todos, solo los" exóticos ". Aún así, no sé cómo reemplazarlos (no puedo ingresarlos en replace-string). – Christian

4

¿Qué tal esto:

Ponga el carácter U + 202D desea hacer coincidir en la parte superior del anillo de corte escribiendo M-:(kill-new "\u202d"). Luego puede tirar de esa cadena en los diversos comandos de búsqueda, ya sea con C-y (por ejemplo, query-replace) o M-y (por ejemplo, isearch-forward).

(Editado para añadir :)

También puede simplemente llamar a comandos no interactiva, que no presenta las mismas dificultades teclado de entrada como las llamadas interactivas. Por ejemplo, el tipo M-: y luego:

(replace-string "\u202d" "") 

Esto es algo similar a su versión de Vim. Una diferencia es que solo realiza reemplazos desde la posición del cursor hasta la parte inferior del archivo (o región angostada), por lo que necesitaría ir a la parte superior del archivo (o región angostada) antes de ejecutar el comando para reemplazar todo partidos.

+1

Esto funciona, gracias. Pero es muy inconveniente, especialmente porque los caracteres encontrados (en isearch o replace) no se resaltarán. Tal vez hay alguna otra posibilidad ... – Christian

Cuestiones relacionadas