Editor de texto gratuito con soporte de modo de columna completa

Si alguien tiene la edad suficiente para recordar el editor ISPF en los mainframes de IBM, entonces sabe a lo que me refiero. Para el resto de ustedes...

Estoy buscando un editor gratuito que me permita editar solo columnas particulares de un archivo de texto (preferiblemente solo en una serie de líneas contiguas).

NotpePad ++, Crimson Editor (que parece tener un desarrollo más largo, por desgracia) y UltraEdit (que no es gratuito, por desgracia), todos reclaman un modo de columna, pero eso es solo la capacidad de copiar/pegar áreas rectangulares de un archivo de texto.

Si bien eso es ciertamente bueno, quiero poder buscar/reemplazar texto y poder restringirlo a un rango o de columnas contiguas, preferiblemente también en un rango de líneas contiguas.

Un mal ejemplo:

Tim likes beer  
Toms likes beer very much  
Bob does not like either beer or wine  
Ann likes beer, and also wine (and the Oxford comma ;-)

y aquí está de nuevo, con algunos números de línea y columna:

           1         2         3         4   
  1234567890123456789012345678901234567890   
1 Tim likes beer  
2 Toms likes beer very much  
3 Bob does not like either beer or wine  
4 Ann likes beer, and also wine  

Si quiero cambiar todo "cerveza" a "pescado" entre las columnas 10 y 20, el resultado sería (cambios en mayúscula).

           1         2         3         4 
  1234567890123456789012345678901234567890  
1 Tim likes FISH
2 Toms likes FISH very much
3 Bob does not like either beer or wine<=== not changed, not between cols 10 & 20
4 Ann likes FISH, and also wine

Como beneficio adicional, también me gustaría restringirlo a ciertas filas, digamos filas 2 a 4, en cuyo caso, el resultado sería:

           1         2         3         4 
  1234567890123456789012345678901234567890  
1 Tim likes beer                       <== not changed, not between lines 2 and 4
2 Toms likes FISH very much
3 Bob does not like either beer or wine <== not changed, not between cols 10 & 20
4 Ann likes FISH, and also wine

Pregunta: ¿alguien sabe de un editor de texto (preferiblemente) gratuito de Widows que pueda hacer eso?

Acerca de su " edad suficiente para recordar el editor ISPF en los mainframes de IBM ": todavía lo uso (y me encanta) más o menos todos los días... Se muestra un mensaje ISPF (arriba a la derecha) si guarda un miembro de PDS llamado "NO"... de hecho, "miembro NO guardado"... Piense en un mensaje similar para un miembro llamado POSIBLEMENTE...
¿Está disponible para Windows?
sí lo es... mira la respuesta que acabo de publicar...
¡misericordia por la generosidad!
Disculpas por haber tardado tanto en otorgar. ¿Quizás debería haber añadido interés? Una gran respuesta. Estoy seguro de que lo encontré hace años, pero no era gratis. Fantástico que es ahora. Me encantó ese editor! Ahora, para tratar de encontrar un IDE que lo use, para que también pueda compilar y depurar :-)
¿A qué te refieres exactamente con la última frase de tu último comentario?
Quiero decir que este es un gran editor, pero cuando codifico quiero un IDE, y un editor desde el cual puedo compilar mi código y usar un depurador. Sin embargo, dudo que esto sea posible con ISPedit, pero aún así estoy muy contento con él.

Respuestas (4)

Aunque todavía no estoy jubilado, tengo " la edad suficiente para recordar el editor ISPF en los mainframes de IBM ": todavía lo uso (y me encanta) más o menos todos los días...

Para responder realmente a su pregunta, le sugiero que eche un vistazo a SPFLite . Aquí hay una cita al respecto, de Wikipedia :

Los editores que se utilizan en el entorno de PC normalmente funcionan de una manera significativamente diferente a los que funcionan en grandes sistemas Mainframe. Los editores de PC están casi universalmente orientados al flujo de caracteres, mientras que los editores de mainframe suelen estar orientados a líneas de texto. Por lo tanto, los usuarios que necesitan trabajar tanto en PC como en mainframe necesitan volverse productivos en dos estilos de trabajo diferentes.

SPFlite es un administrador de archivos y editor de texto gratuito que proporciona, en PC con Windows, un entorno de trabajo familiar para aquellos que están acostumbrados al ISPF basado en mainframe de IBM. Además de proporcionar la compatibilidad funcional básica de ISPF, SPFLite ha agregado funciones ampliadas para mejorar las capacidades de edición.

Una vez que abra un archivo en modo de edición, debería poder resolver su pregunta (de muestra) solo con este comando de edición (primario):

c beer fish 10 20 all

Pero espera, hay más... Si también etiquetarías tu línea 2 con (digamos) .fy tu línea 4 con .l, tu pregunta adicional puede responderse con este comando:

c beer fish 10 20 all .f .l

Fácil, ¿no?

Complementos de Notepad ++ / 2: "Python Script" y "ColReplace"

Escribí un plugin personalizado para ti.

Necesitas:

  1. Bloc de notas++
  2. Python Script - Complemento para Notepad ++
  3. ColReplace : siga las instrucciones de instalación a continuación


  • Los tres productos son gratuitos.
  • Los tres productos se ejecutan (solo) en Windows.
  • ColReplace puede reemplazar en función de las restricciones de filas y columnas.

ColReemplazar

Complemento para Notepad ++ que proporciona una función de búsqueda / reemplazo restringida por filas y columnas.

Nunca antes he codificado en Python, por lo que es posible que el código no sea muy pitónico. ¡Cualquier sugerencia o mejora es bienvenida!

Instalación

  1. Descargue el repositorio de ColReplace como un archivo ZIP: haga clic aquí y extraiga los archivos a una ubicación arbitraria.
  2. Abra el Bloc de notas++
  3. En el menú haz clicPlugins --> Python Script --> New Script
  4. Elija ColReplace.pycomo nombre de archivo y haga clic en Guardar .
  5. Copie el contenido de lo extraído ColReplace.pyen el archivo que acaba de crear en el paso 5.

Uso

  1. En el menú haz clic en Plugins --> Scripts --> ColReplace.
  2. Los cuadros de diálogo que aparecen deben explicarse por sí mismos.

capturas de pantalla

Es cierto que la experiencia del usuario podría mejorarse :)

Captura de pantalla #2 Captura de pantalla #3 Captura de pantalla #4 Captura de pantalla #5

Por mucho que Notepad ++ no me interese personalmente, un simple +1 no hace justicia a un cambio de 5 horas desde hacer una pregunta sobre el software disponible hasta tener un complemento personalizado de código abierto publicado que resuelve el problema. Este es el tipo de cosas que harán que este sitio sea genial.
Probado y funcionando!! Gracias 1.000.000. Desearía poder dar algunos de mis puntos SO como recompensa por esto. Cuando obtenga algunos puntos más aquí, volveré y recompensaré esto. Por favor recuérdame si me olvido. Y, una vez más, ¡gracias!
Esto me inspiró a codificar algunos complementos propios (que es lo que debería haber hecho en primer lugar)
@Mawg De nada :) Muchas gracias por sus buenos comentarios.
Oye, @Mawg... parece que todavía no has concedido la "recompensa" que prometiste en tu primer comentario aquí. Con alrededor de 2.500 representantes en estos días, ¿qué le impide otorgar 500 puntos, a través de tal recompensa y una razón como "una de las respuestas es sobresaliente"? Por cierto, ¿qué tal una interfaz de cmd de línea como esta: c .here .there beer fish (usando las etiquetas de línea '.here' y '.there' también, confío en que entiendas lo que quiero decir...).
@Mawg: aquí hay otro recordatorio, ahora que tiene más del triple de la representación implícita en el último recordatorio hace dos años. ;)
Lo siento, me olvidé. Ahora he publicado una recompensa de 100 puntos, pero no puedo otorgarla por 23 horas, así que no olvides recordármelo si también lo olvido :-)
Esto fue demasiado tentador para no publicar una respuesta competitiva ...
Le otorgaré la recompensa a su respuesta SPFLite. Gracias 1,000,000
Galardonado. Gracias por los recordatorios, chicos :-) Creo que recuerdo haber visto SPFlite hace unos 10 años, pero entonces no era gratis. Es, por supuesto, exactamente lo que estaba buscando.
@JohnY Mira lo que pasó :-) Obtuve un voto negativo y otra respuesta fue una recompensa. Podría vivir con lo último, pero lo primero es desafortunado.
@ComFreek: tienes razón, lamento que haya resultado así. Al menos (más que) cancelé tu voto negativo. La forma en que esto debería haber ocurrido es que obtuviste la recompensa (recompensando tu esfuerzo, sin mencionar el cumplimiento de la palabra) y la respuesta de SPFLite fue aceptada (lo que refleja que, de hecho, es la respuesta "más adecuada" a la pregunta).

El vimeditor puede hacer esto de forma inmediata¹. Hay un instalador de Windows simple para gvim o varias compilaciones están disponibles para su instalación a través de Chocolaty , cygwin, etc.

Vim es un editor de modo, lo que significa que hay varios estados en los que puede estar la ventana del editor, incluido insertar (donde ingresa texto), normal (donde las pulsaciones de teclas activan comandos que manipulan el texto) y visual (donde puede seleccionar bloques de texto) .

El modo Visual puede seleccionar texto en una de tres formas:

  • En cuanto a los caracteres, selecciona rangos de caracteres en una o más líneas.

  • Line-wise selecciona líneas enteras.

  • Por columnas, selecciona un bloque rectangular de caracteres delimitado por posiciones de fila/columna.

Este último se activa moviendo el cursor sobre una esquina de su rectángulo en modo normal y presionando Ctrlv, luego moviendo el cursor a la otra esquina. En este punto, verá la columna resaltada.

A continuación, debe ejecutar un comando de búsqueda y reemplazo que encuentre coincidencias dentro de la selección visual actual (o última):

 :%s/\%Vbeer/fish/g

Tenga en cuenta que esto coincidirá con cualquier instancia de "cerveza" que comience dentro de su selección, incluso si terminan fuera de ella. Anclaría ambos lados de la búsqueda dentro de la selección si no quisiera este comportamiento:

:%s/\%Vbeer\%V/fish/g 

También tenga en cuenta que el principio %de este comando le dice a vim que opere en todo el archivo. Si va directamente al modo de comando (pulsando :) desde el modo visual, el indicador se completará previamente con el prefijo :'<,'>que opera solo en el rango seleccionado. Está bien usar esto, pero como la función de búsqueda y reemplazo opera en línea, aún necesita usar \%Vpara hacer coincidir solo dentro de la selección.

:'<,'>s/\%Vbeer/fish/g

Para un repaso rápido de otras cosas que puede hacer con el modo de columna, vea este video de VimCast .

¹ Eso no significa que solo podrá usar el editor listo para usar. Hay un viejo chiste que dice que si quieres una buena cadena de texto aleatorio, siéntate con VIM y pídeles que salgan del editor. Si no está familiarizado con el uso de vim, puede valer la pena dedicar unos minutos a un tutorial introductorio para que al menos conozca los conceptos básicos sobre cómo abrir, editar, guardar y salir del editor. El paradigma de uso es un poco diferente al de la mayoría de las aplicaciones que puede usar regularmente en Windows. Puede ser muy poderoso, pero tómese el tiempo para comprender los conceptos básicos antes de intentar el uso más avanzado que se detalla en esta respuesta.

Editor SynWrite : si selecciona el bloque de columnas, de la línea 2 a la línea 4, y de la columna 10 a la columna 20, puede hacer Reemplazar todo en esta selección. (Esta es una opción en el cuadro de diálogo Reemplazar).

Diálogo de representante

+1 Gracias. uvviewsoft.com/synwrite se ve bien. Dado que ya uso NotePad ++, probablemente continuaré usándolo, pero es posible que otros deseen considerar SynWrite