Desde 2012, uso los editores creados por Alexei Torgashin para ver y modificar casi todos los archivos de texto, registros y c贸digos de programa en los lenguajes VFP / JS / Python / XML / HTML : primero fue SynWrite , ahora su descendiente CudaText . Deliberadamente eligi贸 a su editor de la lista de probados, que inclu铆a, incluidos AkelPad , Notepad ++ y Sublime Text . La capacidad de respuesta del soporte t茅cnico result贸 ser decisiva: Alexey acept贸 una gran cantidad de deseos / quejas de los usuarios y los implement贸 r谩pidamente. Te lo explicar茅. El n煤mero de deseos / quejas fue casi uniforme a lo largo de los a帽os, y despu茅s de cambiar a GitHub hace tres a帽os, se volvi贸 mensurable y lo estim茅 como 400 deseos / a帽o y 100 errores / a帽o. Es gratamente sorprendente que la expansi贸n de la funcionalidad a pedido de los trabajadores no haya afectado la confiabilidad del editor en su conjunto. Y cuando se agot贸 el recurso de desarrollo sostenible de SynWrite , surgi贸 CudaText .
Le paso la palabra a Alexei.Tengo conversaciones con Alexey sobre varios temas. Recientemente enumer贸 "lo que le falta a Sublime". Me pareci贸 interesante y acordamos presentar estas ideas en Habr茅. Adem谩s, habr谩 una presentaci贸n de tesis de Alexei en mi edici贸n.
Despu茅s de pasar varios a帽os creando su programa, observa de manera diferente los resultados de sus competidores. Usted nota en ellos no solo buenos rasgos (ya los han aplicado o desea aplicarlos), sino tambi茅n desventajas. Mostrar茅 lo que podr铆a mejorarse en Sublime Text (en adelante Sublime ), si lo comparamos con mi CudaText (en adelante Cuda ). Al mismo tiempo, enfatizo que mi editor surgi贸 cuando Sublime ya estaba extendido, muchas de sus ideas eran b谩sicas para Cuda :
- Archivos de configuraci贸n de texto
- Configuraci贸n de superposici贸n
- Multi carruajes
- Complementos de Python
- La paleta de todos los equipos.
Sublime impone r铆gidamente un estilo de trabajo de equipo de texto.
Por ejemplo
- No hay cuadros de di谩logo para configurar, solo hay archivos json (hay muchos).
- No hay controles adicionales en el cuadro de di谩logo Buscar por archivo; en cambio, hay un "idioma" para rellenar los campos de texto.
Este estilo es eficiente, flexible y extensible, pero requiere un aprendizaje continuo del usuario. Para los principiantes, esto crea un umbral de entrada notable.
Cuda est谩 tratando de ser una herramienta m谩s asequible. Esto es posible porque se crea en el entorno Lazarus , que proporciona un rico arsenal de GUI y portabilidad entre Win / Linux / Mac . Como resultado, la flexibilidad de la configuraci贸n de json en Cuda se combina con complementos de di谩logo, por ejemplo, Buscar por archivos (hay una descripci贸n general de habr ), el editor de configuraciones y otros.
Tratar茅 de expresar algunas ideas sobre c贸mo mejorar Sublime . Por supuesto, esta es solo mi opini贸n privada.
Barras de herramientas
No hay barras de herramientas en Sublime . Entonces su estilo de equipo de texto se manifiesta. Aparentemente, se supone que un lugar 煤til para el c贸digo editable es m谩s importante. Puede llamar a todos los comandos desde el men煤, o desde la paleta por nombre, o mediante teclas de acceso r谩pido. Hay un claro inconveniente de este enfoque: debe saber de antemano el nombre del equipo o su tecla de acceso r谩pido. Pero la existencia del equipo correcto y su nombre est谩n lejos de ser siempre obvios.
Una barra de herramientas personalizable, incluso desconectable, es uno de los detalles que reduce el umbral de uso.
Cuda tiene una barra de herramientas horizontal personalizada para invocar comandos y una barra lateral vertical para cambiar paneles: 脕rbol, Proyecto, Consola. La API es responsable de configurar la barra de herramientas, es decir, se realiza a trav茅s del complemento. Pueden aparecer nuevos botones en la barra lateral si los complementos agregan nuevos paneles.

Agregar una barra de herramientas a Sublime no violar铆a ninguna de sus tecnolog铆as anteriores.
Barra de estado
En Sublime, la barra de estado es pobre.

(1) Consola / Buscar / Reemplazar / Por interruptor de archivo del panel
(2) Publicar
(3) Codificaci贸n
(4) Tipo EOL
(5) Configuraci贸n de pesta帽a
(6) Sintaxis
De estos seis campos, solo dos (Codificaci贸n y EOL) se pueden ocultar a trav茅s de la configuraci贸n, y en el campo Mensaje, los complementos pueden agregar / eliminar pares clave = valor. No puede ocultar, reorganizar ni configurar los campos restantes. Es especialmente extra帽o que la informaci贸n importante sobre el / los transporte (s) / selecci贸n (es) entre en el campo Mensaje, donde se mezcla con los textos de los equipos.
En Cuda, un usuario puede en user.json
para los campos de la barra de estado indicar su secuencia, ancho y alineaci贸n:
"ui_statusbar_panels": "caret,L,250|msg,L,0|lexer,L,70|tabsize,L,70"
y completar el campo de caret
(informaci贸n sobre carruajes / selecciones) se puede configurar por separado mediante la sustituci贸n de macros. Por ejemplo, entonces
"ui_statusbar_no_sel": "r={y}/{count} c={xx}", "ui_statusbar_carets": "carets={carets} top/bot={y}/{y2}", "ui_statusbar_col_sel":"r={y}/{count} c={xx} s=[{sel} x {cols}]",
Como resultado de esta configuraci贸n, Cuda se mostrar谩 en la barra de estado
- Si un carro:

- Si hay cuatro carruajes:

- Si la selecci贸n vertical:

Cuda tambi茅n le permite configurar cu谩nto tiempo se tarda en mostrar texto en el campo Mensaje.
脕rbol de c贸digo
El deseo de Sublime de presentar todo en forma de texto es comprensible. Sin embargo, el rechazo del panel 脕rbol, que se encuentra en todos los IDE y editores de texto avanzados, es muy doloroso. Puede usar el "脕rbol de texto" ubicado en una pesta帽a normal (por ejemplo, con el complemento Outline
), pero est谩 mal integrado con la interfaz Sublime y no es un reemplazo completo.
Cuda tiene un panel de Code tree
para mostrar los elementos de sintaxis del archivo activo: funciones / clases / campos para lenguajes de programa, etiquetas / teclas para lenguajes de marcado.

Integraci贸n:
- La pantalla es sincr贸nica, es decir, el 谩rbol muestra el estado del c贸digo inmediatamente despu茅s de cambiarlo (con un retraso personalizado).
- El nodo del 谩rbol seleccionado se sincroniza con la posici贸n del carro en el c贸digo.
- Los nodos de 谩rbol se utilizan para seleccionar bloques, mover el carro y otras operaciones.
Adem谩s, la API de Cuda le permite crear un nuevo panel con un 谩rbol y llenarlo. El complemento Project Manager
hace exactamente eso.
Carpetas con configuraciones y complementos
Para un usuario que no est谩 inmerso en los manuales de Sublime , la situaci贸n de colocar configuraciones / paquetes / complementos en carpetas parece confusa. El primer paso dentro del editor reci茅n instalado es asombroso: mediante el comando de men煤 Preferences -- Settings
dos archivos abiertos, uno de los cuales (configuraci贸n predeterminada) en el t铆tulo del editor es visible como (en Win)
Sublime Text 3/Packages/Default/Preferences.sublime-settings
pero no hay tal archivo o carpeta en el disco. En general, la l贸gica en tal truco se adivina. La configuraci贸n predeterminada debe estar conectada al c贸digo del editor, y se duplicar谩 en alg煤n archivo o no, esto es a discreci贸n del desarrollador. Sublime finge estar en un archivo.
En Cuda, la configuraci贸n predeterminada tambi茅n est谩 protegida, pero hay un archivo real en el ensamblado
settings_default\default.json
en el que se duplican y comentan. La presencia de dicho archivo crea conveniencia no solo para los usuarios, sino tambi茅n para los complementos. Por ejemplo, el editor de configuraciones extrae de este archivo la lista de opciones en s铆 misma, as铆 como los comentarios sobre ellas y el marcado para distribuir las opciones en todo el 谩rbol.
Problemas similares ocurren con los paquetes en Sublime : los busca en Packages
y no los encuentra.
Aunque Cuda no tiene una base tan poderosa de paquetes adicionales como Sublime , la l贸gica de colocaci贸n de Cuda es transparente. Por ejemplo, para los complementos hay una carpeta py
en la que todo es visible, tanto est谩ndar como preinstalado. Hay una carpeta de data/themes
para data/themes
, data/snippets
para data/snippets
, data/lexlib
para lexers.
Control de paquetes
Una situaci贸n extra帽a con el complemento Package Control
. Por un lado, fuera de la caja, Sublime viene sin este complemento. Por otro lado, casi nada serio se puede hacer sin 茅l, sin adiciones, el editor es muy escaso. Incluso colocar el complemento en el men煤 Preferences
y no en Tools--Packages
indica su estado especial. Aparentemente, algunos "derechos de autor" nos impiden incluir este complemento en el ensamblaje Sublime .
Cuda tiene varios complementos (ahora 10), incluido Addons Manager
, incluido en la distribuci贸n.
Paneles flotantes
Sublime tiene un dise帽o de ventana monol铆tico, es decir, la consola y los grupos de pesta帽as se encuentran juntos. Puede ejecutar varias instancias, pero cada una de ellas siempre tendr谩 pesta帽as y, tal vez, una consola.
Cuda tiene configuraciones y comandos para mostrar la consola en una ventana separada. Esto le permite estirarlo convenientemente sin afectar la altura del texto principal y, por ejemplo, colocarlo en un segundo monitor. Adem谩s, puede separar el panel con el 脕rbol para no limitar el ancho del texto principal.

Por cierto, a los usuarios de Atom (o VS Code ) les gustar铆a tener paneles flotantes, pero los desarrolladores se negaron, citando restricciones en Electron . Entonces, esta podr铆a ser la ventaja de Sublime sobre los competidores directos.
Complemento de configuraci贸n
Sublime tiene m谩s de cien configuraciones de kernel (107 en la versi贸n 3.1.1) y seis niveles superpuestos adicionales para acomodar los valores cambiados:
(1) Packages/Default/Preferences (<platform>).sublime-settings
(2) Packages/User/Preferences.sublime-settings
(3) <Project Settings>
(4) Packages/<syntax>/<syntax>.sublime-settings
(5) Packages/User/<syntax>.sublime-settings
(6) <Buffer Specific Settings>
Es f谩cil imaginar una situaci贸n en la que el seguimiento puramente manual de incluso una peque帽a parte de 700 valores (100 teclas en 7 niveles) se convierta en un problema.
En Cuda, hay casi 300 configuraciones de kernel, y hay tres niveles adicionales para superponerlas:
(1) settings/user.json
(2) settings/lexer <syntax>.json
(3) <File Settings>
El problema es el mismo: se deben tener en cuenta demasiados valores (hasta 300 * 4). Para ayudar a los usuarios, hay un complemento que muestra todas las configuraciones en todos los niveles de una tabla, lo que simplifica la b煤squeda y la edici贸n.

Preste atenci贸n a la columna Section
: la configuraci贸n se asigna a los nodos del 谩rbol. Esto proporciona una clasificaci贸n y filtros adicionales. El marcado para construir este 谩rbol se incluye en los comentarios de configuraci贸n en el archivo settings_default\default.json
. Por ejemplo, un comentario
// [UI/Listbox]`
asignar谩 las opciones que siguen al nodo UI/Listbox
. Tambi茅n se puede ver todo el 谩rbol.

Para Sublime, es posible un di谩logo similar:
- El nombre y los siete niveles de superposici贸n son solo ocho columnas en la tabla.
- El formulario y los controles se pueden tomar de Tk o de la biblioteca m谩s avanzada de Python GUI.
- Cambiar las opciones puede conducir a cambios en los archivos y su recarga cuando se guardan.
Peque帽as cosas
Hay varias quejas menores, que, por supuesto, no est谩n en el lugar correcto aqu铆, sino en el foro de soporte t茅cnico de Sublime . D茅jalos ser para completar.
PgDn
/ PgDn
no funcionan en cuadros de di谩logo de lista, por ejemplo, en la Paleta de comandos.- A menudo necesita insertar alg煤n car谩cter complicado , por ejemplo, una flecha o una fracci贸n. No hay suficiente herramienta para ver / seleccionar todos los caracteres Unicode. En Cuda, dicha herramienta tiene la forma de un di谩logo de
Char map
.

- No hay forma de establecer etiquetas para colorear individuales. Cuando hay muchos archivos abiertos, a menudo existe el deseo de colorear las etiquetas de algunos de ellos. En Cuda , el comando
Set tab color...
encuentra en el men煤 local sobre el acceso directo. Los colores configurados de esta manera se guardan en la sesi贸n.
Conclusi贸n
隆Qu茅 f谩cil es dar consejos!
Pero las consideraciones anteriores, en mi opini贸n, no est谩n exentas de beneficios. Si algo es 煤til en la pr贸xima versi贸n de Sublime Text, est谩 bien. Por cierto, tal vez alguien traducir谩 y transmitir谩 ideas a Skinner (Jon Skinner).