copiar / pegar una gran cantidad de texto en el terminal lleva a caracteres codificados / faltantes

0

Yo trabajo con TextMate y R en la terminal. Al pegar una gran cantidad de código (CMD + C / CMD + V, por ejemplo, 60 líneas) a veces sucede que se codifican pocos caracteres en el código, lo que conduce a mensajes de error y ejecución de código incorrecto.

Por ejemplo:

  

col < - ifelse (...

se está convirtiendo en

  

col < col < cse (...

o

  

onlyDF

se está convirtiendo en

  

oalyDF

Estos reemplazos de caracteres parecen muy aleatorios y es difícil predecir cuándo sucederá.

El problema también se describe aquí para iterm2: enlace

La explicación que se proporciona allí es que es un error en bash que puede llevar a una entrada en búfer a perderse debido a la velocidad de pegado.

¿Alguien ha experimentado estos problemas y ha encontrado una solución alternativa para la aplicación de terminal nativa en Mac OS? (por ejemplo, modificando la velocidad de pegado, si eso es posible en el terminal)

    
pregunta grueb 03.02.2018 - 17:58

2 respuestas

1

Cuando necesito pegar una gran cantidad de texto en una ventana de la aplicación de Terminal, uso el comando cat para transferir el texto a un archivo. Por ejemplo, yo ingresaría el comando a continuación antes de pegar el texto con la combinación de teclas + V .

cat >myfile.txt

Cuando termine de pegar texto, ingrese la combinación de teclas control + D . Esto terminará el comando cat .

  

Nota: la combinación de teclas control + D se debe ingresar al principio de una línea. Si no está al principio de una línea después de pegar el texto, presione la tecla return antes de ingresar la combinación de teclas control + D .

    
respondido por el David Anderson 03.02.2018 - 23:38
0

Puede usar el comando pbpaste para obtener el texto en la mesa de trabajo sin pasar por los caprichos del controlador del terminal, el exceso de búfer, etc. Para colocar el texto cortado en un archivo nuevo, use:

pbpaste >myfile.txt

Para adjuntar, use >> , etc. De manera similar, puede enviar el contenido de la mesa de trabajo a otros comandos como entrada:

pbpaste | somecommand

Y si usa el editor vi , puede insertar el contenido de la mesa de trabajo en su archivo con:

:r !pbpaste

Por cierto, también hay un comando correspondiente pbcopy para colocar texto en el área de trabajo. A diferencia de las redirecciones de archivos estándar, puede usar esto para modificar no destructivamente el contenido de la mesa de trabajo "en su lugar":

pbpaste | sed 's/foo/bar/' | pbcopy

... y si también quieres ver la salida:

pbpaste | sed 's/foo/bar/' | tee /dev/tty | pbcopy
    
respondido por el Gordon Davisson 27.10.2018 - 22:54

Lea otras preguntas en las etiquetas