Autor Tema: Comenzar con Vim o Emacs  (Leído 4674 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Comenzar con Vim o Emacs
« en: 03 de Diciembre de 2016, 15:05:46 »
¿Alguien tiene experiencia utilizando Vim o Emacs para programar?

He leido que tienen una curva de aprendizaje complicada. Por lo poco que los he utilizado son bastante feos y poco intuitivos. También he leído que cuando los dominas, son una herramienta muy buena.
¿Merecen la pena?

La idea es utilizarlos para sustituir a Notepad++ o incluso eclipse a la hora de programar programas pequeños y medianos (por ejemplo 3000 líneas de código en 10 archivos).
Suelo programar en C y en Python y me gusta más la línea de comandos que los IDE.

Un saludo.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Comenzar con Vim o Emacs
« Respuesta #1 en: 03 de Diciembre de 2016, 15:23:16 »
A mi lo que no me gusta de Vim y Emacs es ese concepto de buffer y tener que aprenderse todos los comandos. Lo instale pero renegue un poco y nunca mas lo use. Si es terriblemente customizable. Pero el laburo que lleva me quedo con el eclipse

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re:Comenzar con Vim o Emacs
« Respuesta #2 en: 03 de Diciembre de 2016, 15:27:13 »
Otra opinión:
Everyone Who Tried to Convince Me to use Vim was Wrong
http://yehudakatz.com/2010/07/29/everyone-who-tried-to-convince-me-to-use-vim-was-wrong/

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re:Comenzar con Vim o Emacs
« Respuesta #3 en: 03 de Diciembre de 2016, 15:34:48 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Comenzar con Vim o Emacs
« Respuesta #4 en: 03 de Diciembre de 2016, 15:45:48 »
Citar
Atajos dificiles: Vim es muy potente, pero carece de menús o botones. Todo se hace a través de comandos y atajos que son secuencias de letras y signos.

Ese es uno de mis problemas.. tener que memorizar todos los atajos y yo de memoria no me se nada :P

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re:Comenzar con Vim o Emacs
« Respuesta #5 en: 03 de Diciembre de 2016, 16:15:09 »
Yo me tomaría la molestia si realmente merece la pena.
En otros programas todos conocemos atajos a las acciones más comunes (por ejemplo Control-C  Control-V) y realmente ahorran mucho tiempo. Yo no estoy en contra de utilizar atajos de teclado.

El problema es que parece que Vim te obliga a aprender desde cero muchas combinaciones de teclas nuevas a las que no estoy acostumbrado y a las que no veo una ventaja clara.

Todavía no estoy convencido. Por eso me gustaría que algún usuario que se haya pasado al Vim nos comentase su experiencia. Si realmente merece la pena el esfuerzo de aprender Vim.

Un saludo.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Comenzar con Vim o Emacs
« Respuesta #6 en: 03 de Diciembre de 2016, 17:15:26 »
Todavía no estoy convencido. Por eso me gustaría que algún usuario que se haya pasado al Vim nos comentase su experiencia. Si realmente merece la pena el esfuerzo de aprender Vim.

Un saludo.

Solo decir que desde ese punto de vista (desde alguien que usa VIM): Te va a decir que vale el esfuerzo, el problema es que vas a tener que diferenciar si realmente lo hace por gusto, o por que realmente provee mejoras frente a usar un IDE sea cual sea.

Citar
El problema es que parece que Vim te obliga a aprender desde cero muchas combinaciones de teclas nuevas a las que no estoy acostumbrado y a las que no veo una ventaja clara.

Yo tampoco le veo ventaja.. Buscar ? rara ves lo hago en el codigo. Todo lo demas es escribir y borrar. Autocompletado es lo que mas ayuda, mas cuando trabajas con estructuras, punteros, etc. ver donde se usa una variable en eclipse es hacer un click y te lo resalta en todo el archivo. Creo que la unica ventaja que puede proveer el VIM es un ambiente mas ligero + plugin personales, y por ahi no depender del uso de un menu contextual del mouse ( click derecho ) para algunas cosas.

Se que hay alguien apegado al VIM (tsk) y que habia escrito sobre como usarlo para programar. Aca esta:

http://www.todopic.com.ar/foros/index.php?topic=46723.msg390300#msg390300

Yo creo que el va a saber decirte exactamente que diferencias puede existir entre uno u otro.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re:Comenzar con Vim o Emacs
« Respuesta #7 en: 04 de Diciembre de 2016, 07:36:15 »
Muchas gracias. Cuando busqué en el foro la palabra "Vim" no encontré ese hilo.
Es lo que estaba buscando.

http://www.todopic.com.ar/foros/index.php?topic=46723

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re:Comenzar con Vim o Emacs
« Respuesta #8 en: 04 de Diciembre de 2016, 08:12:31 »

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re:Comenzar con Vim o Emacs
« Respuesta #9 en: 04 de Diciembre de 2016, 19:29:27 »
Gracias. Ahora sólo me hace falta tiempo suficiente para dedicar a aprender VIM y decidir por mi propia cuenta.

También estoy planteándome pasar algún día a Linux, porque desde luego no pienso actualizarme a Windows 10.

Un saludo.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:Comenzar con Vim o Emacs
« Respuesta #10 en: 05 de Diciembre de 2016, 08:48:07 »
...porque desde luego no pienso actualizarme a Windows 10....

Solo de curioso y perdon por el OT. Por que no win10?

sds.
-
Leonardo Garberoglio

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re:Comenzar con Vim o Emacs
« Respuesta #11 en: 05 de Diciembre de 2016, 12:56:35 »
Ya tengo bastante software espía con Google y Android.
Hace poco cambié mi buscador predeterminado a DuckDuck Go, estoy planteándome utilizar más el Tor Browser y pasar en el PC a Linux.
Mi correo predeterminado es ahora gmail, pero también me estoy planteando cambiarlo.

La falta de privacidad que tenemos ahora es terrible.


Un saludo.

Desconectado tsk

  • PIC18
  • ****
  • Mensajes: 257
Re:Comenzar con Vim o Emacs
« Respuesta #12 en: 05 de Diciembre de 2016, 12:57:28 »
...porque desde luego no pienso actualizarme a Windows 10....

Solo de curioso y perdon por el OT. Por que no win10?

sds.

Jajaja, puede existir dos razones para esto

1.- La mayoría de los programas ya se están volviendo multiplataforma
2.- Las políticas de MS con lo de las actualizaciones y la recolección de datos de los usuarios.

El segundo punto me recuerda el caso de Samsung con sus Televisiones con reconocimiento de voz. Ante el escándalo decidieron dar dos opciones:

1.- Tener cuidado con lo que se dice enfrente del aparato
2.- No usar el aparato :)

Y teniendo en cuenta que W10 hace lo mismo con Cortana y la recolección de datos de telemetría. Hay un servicio que se dedica a capturar todas las pulsaciones que haces en el teclado.

Por otro lado emacs es, por así decirlo, un Sistema Operativo que se quiere hacer pasar por editor de texto :) :)

Está pensando para que nunca tengas que salir de el, y por lo general busca reemplazar las herramientas propias del Sistema Operativo.

¿Quieres leer tus correos electrónicos, tocar música, tener un organizador y demás en un sólo programa? Emacs es lo tuyo, pero es un programa muy grande y usa bastante memoria, aunque no a los niveles de Eclipse o Netbeans.

En cambio VIM/VI es, por mucho, más ligero y puedes tener un entorno con el que puedes programar en la mayoría de los lenguajes de programación existentes, incluso el nuevo TrumpScript  :lol:

Si lo prefieres, VIM cuenta con GUI (GVIM) que tiene menús y botones, por lo que no tendrías que, en un inicio, memorizar la cantidad ingente de comandos.

Quieres algo más ligero con lo que comenzar y pre-configurado

http://cream.sourceforge.net/

Tanto emacs como vim están pensados para que no separes los dedos del teclado, de ahí su aparente complejidad y curva de aprendizaje pronunciada.
Algo de humor


Como mencionas que usas python, desde ya podrías crear tus propios plugins para vim en python

Código: [Seleccionar]

$ cat stm32cube.vim
if !has('python')
finish
endif

let s:plugin_path = escape(expand('<sfile>:p:h'), '\')
let s:ioc_path = fnamemodify('.', ':p:h:t')
execute 'pyfile ' s:plugin_path . '/stm32cubeMX.py'
python InitModule(vim.eval("s:plugin_path"),vim.eval("s:ioc_path"))

function! s:SetCubeMXEnv(ioc)
python SetupEnv(vim.eval("a:ioc"))
endfunc

function! s:UpdateCubeMXEnv()
python UpdateEnv()
endfunc

function! s:UpdateCubeMXTags()
python UpdateTags()
endfunc

function! s:UpdateCubeMXCMake()
python UpdateCMake()
endfunc

command! -nargs=1 -complete=file SetCubeMXEnv call s:SetCubeMXEnv(<f-args>)
command! -nargs=0 CubeMXEnvU call s:UpdateCubeMXEnv()
command! -nargs=0 CubeMXTUTags call s:UpdateCubeMXTags()
command! -nargs=0 CubeMXUCMake call s:UpdateCubeMXCMake()


Código: [Seleccionar]

$ cat stm32cubeMX.py
import os
import glob
import vim
import string
from jinja2 import FileSystemLoader, Environment

TEMPLATE_DIR = ""
IOC_FILE = ""
jinja2_env = ""
PROJECT_ABSPATH = ""

##
# @brief Initialize the Template directory and the jinja2 template env
#
# @param template_path
#
# @return
def InitModule(template_path,ioc_path):
    global IOC_FILE
    global TEMPLATE_DIR
    global jinja2_env
    global PROJECT_ABSPATH
    PROJECT_ABSPATH = os.path.abspath(".")
    ico_file_path = glob.glob(os.path.join(PROJECT_ABSPATH,"*.ioc"))
    if(ico_file_path != []):
        IOC_FILE = os.path.basename(ico_file_path[0])
    TEMPLATE_DIR = os.path.join(template_path,"templates")
    jinja2_env = Environment(loader=FileSystemLoader(TEMPLATE_DIR),trim_blocks=True)


##
# @brief Create the Tags List Database
#
# @return
def CreateTags():
    print "Creating TagLists"
    vim.command("silent !find . -name '*.c' -o -name '*.h' > cscope.files")
    vim.command("silent !cscope -b")
    vim.command("silent !ctags -R .")
    vim.command("TlistAddFilesRecursive .")


##
# @brief This take the IOC file generated by STM32CUBEMX to generate the CMakeLists.txt
#        and the .ycm_extra_conf.py files
#
# @param outname
# @param ioc
#
# @return
def CreateCMakeLists(ioc):
    global IOC_FILE
    IOC_FILE = ioc
    IOC_PATH = os.path.dirname(os.path.abspath(ioc))
    f_ioc = open(ioc).read().split("\n")
    MCU = [d.split("=") for d in f_ioc if "PCC.PartNumber" in d][0][1]
    OUTPUT = [d.split("=") for d in f_ioc if "ProjectManager.ProjectName" in d][0][1]
    Inc = [];
    Src = [];
    FAMILY = ""
    STARTUP_FILE = ""
    SYSTEM_FILE = ""
    STARTUP_FILES = []
    for root,dirs,files in os.walk("."):
        if "inc" in root.lower() or "include" in root.lower():
            Inc.append(root)
        elif root.startswith("./Src"):  #USER Sources
            for file in files:
                if file.endswith(".c"):
                    Src.append(os.path.join(root,file))
        elif 'Src' in root:
            for file in files:
                if file.endswith(".c"):
                    STARTUP_FILES.append(os.path.join(root,file))
        else:
            for file in files:
                if file.startswith("startup_") and file.endswith(".s"):
                    _,FAMILY = file.split("_")
                    FAMILY = FAMILY[:-2].upper().replace("X","x")
                    STARTUP_FILE = os.path.join(root,file)
                elif file.startswith("system_") and file.endswith(".c"):
                    SYSTEM_FILE = os.path.join(root,file)
                elif file.endswith(".c"):
                    if "CMakeFiles" not in root:
                        STARTUP_FILES.append(os.path.join(root,file))
                elif file.endswith(".h"):
                    if root not in Inc:
                        Inc.append(root)

    cmakef = jinja2_env.get_template('CMakeFiles.tmp').render(
            Inc=Inc, Src=Src,STARTUP_FILE=STARTUP_FILE,SYSTEM_FILE=SYSTEM_FILE,
            FAMILY=FAMILY, STARTUP_FILES=STARTUP_FILES,MCU=MCU,PNAME=OUTPUT
            )
    f = open(os.path.join(IOC_PATH,"CMakeLists.txt"),"w")
    f.write(cmakef)
    f.close()

    ycm_extra_conf = jinja2_env.get_template("YCM_ExtraConf.tmp").render(Inc=Inc, CPU_FAMILY=FAMILY)
    f = open(os.path.join(IOC_PATH,".ycm_extra_conf.py"),"w")
    f.write(ycm_extra_conf)
    f.close()

def SetupEnv(ioc):
    CreateCMakeLists(ioc)
    CreateTags()
    print "Done!\n"

def UpdateCMake():
    if IOC_FILE == "":
        print "Error: Run SetCubeMXEnv first"
    else:
        CreateCMakeLists(IOC_FILE)
        print "Done!\n"

def UpdateTags():
    if IOC_FILE == "":
        print "Error: Run SetCubeMXEnv first"
    else:
        CreateTags()
        print "Done!\n"

def UpdateEnv():
    if IOC_FILE == "":
        print "Error: Run SetCubeMXEnv first"
    else:
        CreateCMakeLists(IOC_FILE)
        CreateTags()
        print "Done!\n"

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re:Comenzar con Vim o Emacs
« Respuesta #13 en: 05 de Diciembre de 2016, 13:40:57 »
En cuanto a velocidad y memoria, los dos me han parecido bastante ligeros para un PC actual. Las versiones que tengo instaladas ocupan esto:

VIM 8.0 para Win32:
  Ram = 3744 Kbytes
  HDD = 29.2 Mbytes

Emacs 24.3 para Win32:
  Ram = 6956 Kbytes
  HDD = 159 Mbytes

Miraré un poco Emacs. Me atraía menos porque es menos estandar. En cualquier linux puedes encontrar VI pero encontrar Emacs es más difícil. Además me parecía todavía más complejo que VI.

¿Tú por cual te decantas?

Saludos.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:Comenzar con Vim o Emacs
« Respuesta #14 en: 05 de Diciembre de 2016, 15:08:15 »
Mi opinion es, si te dedicas a programar como trabajo de todos los días, entonces vim/emac/etc son la opcion màs indicada.
Si programas de modo eventual entonces eclipse u otro ide de ese estilo es la mejor solucion.
Siempre he querido pasar a linux y usar editores para programar (tsk me ha mostrado varias opciones y se consigue trabajar muy rápido y participo en varios proyectos en github y la mayoria usa editores) pero luego caigo en la cuenta que solo el 10% de mi tiempo (como mucho) le dedico a la programacion... la curva de aprendizaje sería muy lenta con esa dedicacion.

Saludos!
-
Leonardo Garberoglio