Mojave: pegar texto con caracteres de control

4

Uso git desde Terminal.app, y de vez en cuando terminará (especialmente después de una resolución de fusión) con algo como:

$ git status
  ...
  Untracked files:
      foo/bar/baz.orig

Donde el espacio en blanco antes de foo es un carácter de tabulación.

Desde Mojave, al copiar y pegar esa línea (lo que quiero hacer para rm el archivo) se genera una alerta (completa con bonk alto) que me pide que confirme si quiero pegar los caracteres de control desagradables.

Alguien sabe si:

  1. hay una manera de deshabilitar la alerta y simplemente pegar con el control caracteres, o
  2. hay un atajo de teclado para pegar sin el control personajes?

FWIW, entiendo que hay otras formas de eliminar el archivo (por ejemplo, git status|grep orig$|xargs rm ) y entiendo por qué, en el caso general, desearía limitar el pegado de caracteres de control.

    
pregunta chrisbtoo 30.10.2018 - 18:06

3 respuestas

3

Actualice su sistema operativo a 10.14.1 o posterior

Parece que la Terminal en 10.14 presentaría este diálogo al pegar un carácter de tabulación, pero la Terminal actualizada en 10.14.1 y 10.14.2 no lo hace.

Me estaba rascando la cabeza por la razón por la que solo podía reproducir este problema en una instalación, pero no en otra. Al no poder encontrar ninguna configuración que tuviera algún impacto, finalmente intenté actualizar la máquina que mostraba el cuadro de diálogo y se había ido.

    
respondido por el Alexander O'Mara 13.12.2018 - 23:49
1

Entonces, ten en cuenta que la pestaña carácter, Unicode U + 0009 "TABULACIÓN DE PERSONAJES" (UTF-8 / ASCII hex 09) es simplemente un carácter regular. Una que es muy molesta de tratar, sí. Pero no es un 'personaje de control'. Esto es diferente de lo que sucede cuando presiona la tecla en su teclado con la etiqueta tab , que podría asignarse a una secuencia de escape / control de caracteres como '\ t', que es diferente .

El problema específico que encontraste es, de hecho, "solucionado" en 10.4.1+. Sin embargo, esto todavía no significa que no vaya a encontrar este error u otros similares.

Por ejemplo, toma la secuencia:

printf '3[34mEscape!3[00m\n'

E intente copiarlo / pegarlo (o su salida) en diferentes shells. También intente establecer la configuración de Terminal.app 'Escape entrada no ASCII con Control-V', o use control-command-V, "Pegar texto escapado". Un poco extraño, ¿eh?

  1. Dentro de un terminal, tu mejor apuesta para la mayoría de las cosas es:
    • En general, nunca use los accesos directos ⌘C y ⌘V para acceder al portapapeles.
    • En su lugar, diríjase al comando pbcopy y luego use pbpaste según sea necesario.

Entonces, esto sería git status | pbcopy , y para algunos esto es posible que desee copiar, es posible que necesite combinar stderr y stdout: git error 2>&1 | pbcopy resultará en un portapapeles vacío sin 2>&1 .

Esto todavía puede quitar los caracteres de control adecuados (cualquier cosa que no sea válida en UTF-8). Pero como mencionó, usted ya sabe por qué no quiere copiar y pegar estos. Si está configurado para capturar "caracteres de control" además de texto, de lo que realmente estamos hablando es simplemente capturar un flujo de bytes, por lo que probablemente sea mejor evitar el portapapeles, que nunca tuvo la funcionalidad de reproducir de forma arbitraria. secuencias de bytes.

P.S. ¿Ha considerado cambiar a iTerm2 ?

    
respondido por el Geoff Nixon 13.12.2018 - 13:38
0

Intentaría conceder acceso completo al disco de Terminal en las preferencias del sistema.

Puedes hacer esto de la siguiente manera:

  1. Ir a Apple > Preferencias del sistema ...
  2. Haz clic en Seguridad & Privacidad
  3. Selecciona la pestaña de Privacidad
  4. En el panel de la izquierda, seleccione la opción Acceso completo al disco
  5. Ahora haga clic en el candado en la parte inferior izquierda de la ventana
  6. Ingrese su contraseña de administrador y haga clic en el botón Desbloquear
  7. Ahora haga clic en el botón + en la parte inferior de la lista del lado derecho
  8. Vaya a la aplicación de Terminal (que generalmente se encuentra dentro de la carpeta de Utilidades dentro de su carpeta de Aplicaciones) y ábrala ( Nota: Si Terminal ya se estaba ejecutando, se le pedirá que lo abandone primero)
  9. Recuerda volver a bloquear el candado

Ahora intente pegar texto con caracteres de control en la Terminal y vea cómo va.

    
respondido por el Monomeeth 11.12.2018 - 05:23

Lea otras preguntas en las etiquetas