Esto sucede si uso ctrl + shift + v o pego desde el menú contextual.
¿Cómo hago para detener este comportamiento?
Esto sucede si uso ctrl + shift + v o pego desde el menú contextual.
¿Cómo hago para detener este comportamiento?
Respuestas:
No copie varias líneas de texto para pegar. Casi puedo garantizar que simplemente está copiando la última parte de la línea. Si hace triple clic para copiar la línea de código que está pegando, obtendrá la nueva línea al final de la línea. Si quiere estar seguro, ese es realmente el problema, luego copie toda la línea, excepto la última letra / dígito, y vea si pegar eso también incluye una nueva línea.
El texto que está pegando incluye una nueva línea final. Cuando pega una nueva línea, el shell que se ejecuta en el terminal lo ve presionando Enter, por lo que ejecuta el comando.
La operación de pegado es realizada por el emulador de terminal; pasa el texto pegado a la aplicación que se ejecuta en el terminal, de la misma manera que pasa el texto escrito por el usuario. Consulte ¿Cómo funcionan la entrada del teclado y la salida de texto? para obtener más información sobre cómo funciona la entrada. La aplicación (aquí, el shell) no tiene forma de distinguir entre las pulsaciones de teclas y una operación de pegar.
Muchos emuladores de terminal en estos días admiten pasta entre corchetes . En el modo de pegado entre corchetes, la aplicación puede distinguir una operación de pegado de las pulsaciones de teclas. La pasta entre corchetes solo es útil si la aplicación hace algo diferente con el texto pegado, por lo que se habilita al admitir aplicaciones, no es algo configurado por el usuario del emulador de terminal.
Zsh 5.1 (que salió hace unas semanas, por lo que aún no está disponible en la mayoría de las distribuciones) agrega soporte para el modo de pegado entre paréntesis. Cuando pega texto, simplemente se inserta en la línea de comando y puede editarlo antes de presionar Enterpara ejecutar la línea de comando.
Los usuarios de oh-my-zsh pueden usar el complemento safe-paste incluso en versiones anteriores de zsh.
Otra cosa que puede hacer en zsh es hacer que inserte la selección como una cadena, con comillas (en forma de barras invertidas antes de cada carácter especial de shell, como espacios en blanco). Escriba `xsel`
para obtener la selección principal (selección automática del mouse), o `xsel -b`
para obtener el contenido del portapapeles (texto copiado con Ctrl+ C), luego presione Tab.
Si tiene una versión anterior de zsh y desea insertar el contenido del portapapeles sin citar, puede definir una función que inserte la selección.
function zle_insert_x_selection {
LBUFFER+=$(xsel ${NUMERIC+-b} -o </dev/null)
}
zle -N zle_insert_x_selection
bindkey '\e\C-v' zle_insert_x_selection
Con esto en su .zshrc
, puede presionar Ctrl+ Alt+ Vpara insertar la selección principal, o Ctrl+ U Ctrl+ Alt+ Vpara insertar el contenido del portapapeles. Se insertan antes del cursor, sin cambios, excepto sin una nueva línea final. Vea Compartir el portapapeles entre bash y X11 para algo similar en bash.
Si está utilizando bash como su shell, puede presionar Ctrl-X Ctrl-E
para que aparezca un editor (definido por $ VISUAL o $ EDITOR, por ejemplo, vi
o tal vez nano
).
Luego puede pegar sus comandos exactamente como lo haría si estuviera editando un archivo. Se ejecutarán si guarda y sale. O cancelado si sale sin guardar.
Para pegar varias líneas en el símbolo del sistema, abra comillas simples o dobles antes de pegar.
$ echo '
paste
...
...
'
Luego puede presionar volver para repetirlo. Cuando hacia arriba, todas las líneas que pegó estarán en una línea editable.
Esto funciona siempre que no haya una sola cita en el texto que pegue.
En una ventana del editor de texto, use los siguientes atajos para copiar texto sin \ n (el avance de línea):
En una ventana del navegador, u otra cosa donde el texto no sea editable, use una de dos técnicas:
Cómo se ve una selección correcta (sin \ n):
ls -al
Cómo se ve una selección incorrecta (con \ n):
ls -al