Editor de ASCII solo basado en GUI incorporado para OS X

1

Estoy intentando invocar mediante programación un editor OS X desde un script que:

  • no agrega comillas inteligentes ni ningún carácter que no sea ASCII al editar
  • funcionará "fuera de la caja" en cualquier sistema mac estándar
  • permite al usuario hacer clic con el mouse para colocar el cursor

Lamentablemente, Nano y sus amigos no permiten el posicionamiento del cursor, y Apple perdió la cabeza con las actualizaciones de TextEdit y realmente destruyó ese editor.

Mi mejor esperanza es que haya alguna forma programática de configurar TextEdit para que se comporte como un editor ASCII. Alternativamente, ¿hay un editor de terceros cuya licencia me permita incluirlo en mi script para satisfacer esta necesidad?

===== CONTEXTO DE USO  Tengo una secuencia de comandos de Python que se ejecuta "fuera de la caja" en cualquier mac. Ahora quiero que la secuencia de comandos invoque un editor en un archivo ASCII que necesito que permanezca como un archivo ASCII.
No quiero que el usuario realice la configuración manual, quiero que la secuencia de comandos se inicialice. Idealmente, no cambiaría ninguna configuración del entorno global, pero puedo dejar ese segundo requisito, si no tengo otra opción.

    
pregunta Dan Oblinger 22.05.2015 - 06:17

4 respuestas

5

Cualquier editor de texto & textutil

Todavía intrigado por tu problema, encontré la siguiente solución. Hay una aplicación de Terminal llamada textutil y permite convertir texto enriquecido en texto plano.

  • Edite y guarde su texto 'Rico' como quiera (como en TextEdit).
  • Use la línea de comando textutil para convertir su texto enriquecido a texto normal

    textutil richtext.rtf -convert txt
    
  • También puedes canalizar la salida textutil a través de sed para reemplazar las citas inteligentes y hacer lo que quieras con ella

    textutil richtext.rtf -convert txt -stdout | sed s/[”“]/'"'/g
    

Seconvierteen:

Hello,thisisrichTextwith"smart" quotes

    
respondido por el CousinCocaine 22.05.2015 - 16:02
3

TextEdit

Mencionas que Apple perdió la razón con TextEdit. ¿De qué manera específicamente? De todos modos, sugeriría TextEdit:

  • Puede abrir cualquier archivo .txt como texto simple
  • Funciona fuera de la caja
  • Permite a los usuarios usar el mouse

Puede listar sus preferencias actuales programáticamente como:

defaults read com.apple.TextEdit

Siempre puedes configurar las preferencias programáticamente de esta manera:

defaults write com.apple.TextEdit RichText 0

TengaencuentaquelaconfiguracióndelsistemaparalascotizacionesavecespuedeinterferirconlaconfiguracióndelascomillasinteligentesenTextEdit.Paradeshabilitarlascitasinteligentesentodoelsistema:

  • Iralaspreferenciasdelsistema->Teclado
  • Vayaalapestaña'Texto'
  • Desmarquelacasilla'Usarcomillasyguionesinteligentes'

    
respondido por el CousinCocaine 22.05.2015 - 07:54
1

HTML / Javascript

Una forma de realizar una edición de texto simple independiente del sistema es mediante una combinación de HTML y Javascript. Esto es Ascii tan simple como es posible.

El código a continuación se roba descaradamente de thiscouldbebetter.wordpress.com , y le daremos alguna orientación sobre cómo implementar esto.

<html>
<body>

<table>
  <tr><td>Text to Save:</td></tr>
  <tr>
    <td colspan="3">
      <textarea id="inputTextToSave" style="width:512px;height:256px"></textarea>
    </td>
  </tr>
  <tr>
    <td>Filename to Save As:</td>
    <td><input id="inputFileNameToSaveAs"></input></td>
    <td><button onclick="saveTextAsFile()">Save Text to File</button></td>
  </tr>
  <tr>
    <td>Select a File to Load:</td>
    <td><input type="file" id="fileToLoad"></td>
    <td><button onclick="loadFileAsText()">Load Selected File</button><td>
  </tr>
</table>

<script type='text/javascript'>

function saveTextAsFile()
{
  var textToWrite = document.getElementById("inputTextToSave").value;
  var textFileAsBlob = new Blob([textToWrite], {type:'text/plain'});
  var fileNameToSaveAs = document.getElementById("inputFileNameToSaveAs").value;

  var downloadLink = document.createElement("a");
  downloadLink.download = fileNameToSaveAs;
  downloadLink.innerHTML = "Download File";
  if (window.webkitURL != null)
  {
    // Chrome allows the link to be clicked
    // without actually adding it to the DOM.
    downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob);
  }
  else
  {
    // Firefox requires the link to be added to the DOM
    // before it can be clicked.
    downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
    downloadLink.onclick = destroyClickedElement;
    downloadLink.style.display = "none";
    document.body.appendChild(downloadLink);
  }

  downloadLink.click();
}

function destroyClickedElement(event)
{
  document.body.removeChild(event.target);
}

function loadFileAsText()
{
  var fileToLoad = document.getElementById("fileToLoad").files[0];

  var fileReader = new FileReader();
  fileReader.onload = function(fileLoadedEvent) 
  {
    var textFromFileLoaded = fileLoadedEvent.target.result;
    document.getElementById("inputTextToSave").value = textFromFileLoaded;
  };
  fileReader.readAsText(fileToLoad, "UTF-8");
}

</script>

</body>
</html>
    
respondido por el CousinCocaine 22.05.2015 - 08:03
1

Nano permite posicionar el cursor. Por supuesto, esto se debe a que Terminal en sí proporciona esta opción . Simplemente pulse Opción + Haga clic donde lo necesite para ir. Anteriormente, esta era una opción que tenía que habilitar en las Preferencias de Terminal, pero para las últimas versiones de OS X, está habilitada de forma predeterminada (o codificada). Funcionará en la mayoría de los programas de línea de comandos, incluidos otros editores como vim o emacs.

Otra opción que está habilitada de forma predeterminada es Scroll Alternative Screen . Permite que las pantallas interactivas como man o nano se desplacen en lugar de desplazarse por la pantalla del terminal. Esto funciona con el desplazamiento desde un panel táctil o una rueda de desplazamiento o también una rueda mágica del ratón.

    
respondido por el cde 07.10.2015 - 03:20

Lea otras preguntas en las etiquetas