2008-09-26 20 views
10

De acuerdo, estoy seguro de que esto es simple pero me está volviendo loco. Recientemente fui a trabajar en un programa en el que tuve que retroceder un poco en el tiempo y utilizar Redhat 9. Cuando escribo en la línea de comandos desde un xterm estándar ejecutando KornShell (ksh), y llego al final del alinee las diapositivas de la pantalla hacia la derecha (cortando el lado izquierdo de mi comando) en lugar de envolver el texto en una nueva línea. Esto me dificulta las cosas porque no puedo copiar y pegar fácilmente desde el comando anterior directamente desde la línea de comandos. Tengo que mirar el historial y pegar el comando desde allí. En caso de que te lo preguntes, hago un montón de scripts awk de línea de comandos que hacen que la línea sea bastante larga.KornShell (ksh) envolvente

¿Hay alguna manera de forzar la línea de comando para que se ajuste en lugar de desplazar la visibilidad hacia el lado derecho del comando que estoy escribiendo?

He revisado las opciones de la página del manual sin suerte.

estoy corriendo:

  • XFree86 4.2.99.903 (174)
  • KSH 5.2.14.

Gracias.

+0

Háganos saber si obtuvo la respuesta que deseaba. – tzot

Respuesta

2

Si es posible, tratar de romper el comando a múltiples líneas añadiendo \ es decir:

 
$ mycommand -a foo \ 
    -f bar \ 
    -c dif 
0

No sé de una manera de forzar la cáscara para envolver, pero me gustaría preguntar por qué Estaría escribiendo líneas tan largas. Con los scripts awk, simplemente envuelvo el script en comillas simples, y luego rompo las líneas donde quiero. Solo se complica si necesita comillas simples en el script, y es diabólico si necesita comillas simples o dobles. En realidad, la regla es lo suficientemente simple: use comillas simples para envolver todo el script, y cuando desee una comilla simple en el script, escriba '\''. La primera cita termina la cadena de comillas simples anterior; la comilla simple invertida produce una sola comilla; y la última comilla simple comienza una nueva cadena entre comillas simples. Realmente se pone peludo si necesitas escapar de esos personajes para una evaluación o algo similar.

La otra pregunta es: ¿por qué no iniciar en un editor. Como soy un fanático de vim (ok, he usado vi durante más de 20 años, así que es más fácil para mí que las alternativas), tengo el shell Korn configurado en modo vi (set -o vi), y puede hacer escape-v para ejecutar el editor en cualquier cosa que haya tipeado.

6

¿Hizo man ksh?

Quiere hacer un set -o multiline.

Extracto de man ksh:

multilínea:

El incorporado en los editores van a utilizar múltiples líneas en la pantalla durante líneas que son más largos que el ancho de la pantalla. Esto no puede funcionar para todos los terminales.

+0

¡Funciona para masilla, y me estaba volviendo loco! – Anonymouslemming

0

Esta es una especie de respuesta pragmática, pero cuando eso es un problema para mí que suelo hacer algo como:

strings ~/.history | grep COMMAND 

o

strings ~/.history | tail 

(El archivo de la historia tiene una un poco de datos binarios en él, por lo tanto 'cadenas')

4

eval $ (resize) debería hacer yo t.

+0

Parece que esto debe ejecutarse cada vez que cambie el tamaño de la ventana del terminal (masilla). ¿Hay una manera dinámica de hacer esto? – Kit

0

La respuesta simple es:

$ set -o multiline 

ksh antes de 5.12, al igual que el ksh enviado con NetBSD 6.1, no tiene esta opción. Usted tendrá que desactivar el modo Edición Interactiva línea de entrada actual, que generalmente se emacs:

$ set +o emacs 

Esto desactiva una gran cantidad de featuers todo, como para rellenar la ficha o el uso de la tecla 'flecha arriba' para rodar volver al comando anterior.

Si decide acostumbrarse al modo emacs de alguna manera, recuerde^a va al comienzo de la línea (la tecla "Inicio" no funcionará) y^e va al final.

Cuestiones relacionadas