Hace 7 años | Por IvanDrago a hackaday.com
Publicado hace 7 años por IvanDrago a hackaday.com

Al, como muchos de vosotros, piensa que "sabe utilizar vi". Estoy aquí para deciros que no lo es. Y a menos que hayas pasado los últimos años solo en cueva en el Himalaya, alimentándote, bebiendo y un ordenador portátil con Vim Golf exclusivamente, es probable que tú tampoco lo seas. Caray, no me considero un maestro de Vim, pero voy a escribir este ensayo elogiándolo (usando Vim, por supuesto).

Comentarios

D

#1 #7 yo usaba Joe pq no conseguía entender Vi/Vim hasta que un día me puse a ello... Vim se mea en todos pero Vi sigue siendo un poco infernal

#8 lo puedes activar por defecto en el archivo .vimrc del usuario

IvanDrago

#25 mi .vimrc entra en los backup tú... lol

como el .fluxkeys lol son MUCHAS horas de curro lol

D

#25 "Vi sigue siendo un poco infernal"

echo set showmode > ~/.exrc

D

#12 #18 #25 echo set showmode > ~/.exrc

Leed la documentación, coño.

Con eso, al arrancar vi, si, VI, os saldrá en la esquina inferior derecha el modo.

De nada.

NO hace falta instalar vim para tener un vi con información sobre el modo.

D

#28 Go to #46

Wayfarer

#10 Si al final da igual: también se puede trabajar con Vim dentro de Emacs

https://bitbucket.org/lyro/evil/wiki/Home

CC #13 #14 #15 #23 #26

m

#35: Pwnado me hallo.

l

#35 Hay modos vim para prácticamente todos los IDEs

C

#23 #7 también le llaman Escape-Meta-Alt-Ctrl-Shift+ (todo a la vez)

IvanDrago

#4 y no puedo votarte negativo...

G

#4 Yo utilizo vi desde la primera vez que instale linux por 1998 y pretendo seguir utilizando hasta que sepa como salir de el.

cc #15 #22

en serió ... siempre fui de emacs, pero desde nano aunque sea más basico es suficiente para no andar con gilipolleces en la mayoría de tareas.

Quitando algun sistema embed que aveces vienen solo con vi y sin nano, no recuerdo la vez que necesite volver a arrancar vi/emacs teniendo nano

t

#38 Nano está bien cuando lo único que quieres hacer es un par de cambios en un fichero de configuración. Pero si lo que quieres es utilizar un editor como parte de un entorno de desarrollo, Nano se queda muy cortito. Cambiar ficheros de configuración con Emacs me parece matar moscas a cañonazos. Vim creo que es útil para los dos casos de uso.

G

#63 nano vale perfectamente para programación, si vas de friki pro, pro-vi, te debería llegar nano ya que eres un programador pro.

Si quieres algo más complejo hoy en dia hay suficientes IDE visuales bastante buenos, vim/emacs son para linuxeros cabezones.

Hoy en dia vim/emacs no son necesarios más que para que los nostalgicos cabezones tengan algo que presumir de friki, es como la moda que hubo en su dia de hablar chino, inutil pero todos los frikis ahí aprendiendolo...

D

#65 Vi se usa en servidores y en algunos lugares solo está AIX así que te puedes joder fácilmente.

O eso usar "sftp://usuario@host" en el explorador de XFCE o Gnome, pero calla, que muchos no lo saben.

#70 ahora se estará tirando de los pelos lol.

Sí, puedes usar SSH como una carpeta desde tu bonito escritorio en UNIX. Te aparece como una unidad montada de red y a vivir.

M

#71 No si formas hay, pero digamos que ya empezamos a meter excepciones según el lugar donde estemos sentados. O que se yo, imagínate que tienes que hacer un doble SSH.

G

#71 Ya dije que si hay casos que no, en mi caso algunos sistemas embed pero vamos que no me planteo ser usuario de vim por esos casos, cuando me surje la remota posibilidad descargo un cheatsheet y listo, en mi cabeza tengo que hacer hueco para cosas más utiles que recordar vim

en los servidores puedes instalar muchos editores visuales, sin necesidad de X, y arrancarlos remotamente a traves de ssh.

Hasta gedit de gnome, puedes instalarlo en un servidor sin X.

ssh -X@ip
gedit ...

lo de gedit y editores similares es un ejemplo por que es util cuando tienes que hacer c&p pero vamos si vamos que hay muchos editores que soportan eso.

D

#77 Si, lo sé, pero muchos servidores SSH tienes desactivado hasta el forwarding de X por seguridad.

Y meter todo el cúmulo de dependencias de gedit en el servidor es enguarrarlo.

Glib creo que depende de GNU Glibc y eso en un AIX, BSD o Solaris es un cúmulo extra de porquería y vulnerabilidades.

Como digo, el "echo set showmode > ~/exrc && echo set ruler >> ~/.exrc" tira más que de sobra sin meter vim.

"lo de gedit y editores similares es un ejemplo por que es util cuando tienes que hacer c&p "

Pega en la terminal directamente teniendo vi en modo Insert, y ya.

Lo que me hace gracia es que diga la gente "abres vi, verás que risa". Pero si vi con la configuración dicha antes es casi como un vim pelado.

G

#79 Si hablamos de guarrerias tampoco deberías andar a programar nada remotamente ni nada importante que necesite un editor complejo.

Para cambiar configuraciones incluso sueles tener sed que yo lo tengo utilizado por no abrir vim si era lo único disponible y modificar cosas lol

Prefiero liarme con un regex que con vim

D

#80 Hombre para algunas config sed es contraproducente.

Y cuidado con sed, que el flag "-i" no lo tienen muchos BSD, en concreto los BSD, AIX y Solaris creo que tampoco.

perl -p -i -e 's/cadena/reemplazo/g' funciona similar , y creo que Perl ya forma de la base de cualquier Unix.

Según que servidores, solo tienen vi y ya te digo, con poner lo dicho en ~/.exrc mejora bastante.

No creo que tengas eggs de modificar un XML (RH, hijos de puta con DeviceKits y demás basuras) con sed

G

#81 perl... sed para eso (regex) tanto da y es similar, lo que este disponible.

Lo que tengo hecho con sed+bash daría para una buena pelicula de terror.

Y de aventuras como cuando hace unos años hice un script que configuraba una instalación "default" debian, como servidor postfix/dovecot/bind/web/firewall y unas cuantas opciones sobre un dominio dado a base básicamente de sed

También cuando colaboraba con gentoo por sus inicios se modificaban el source code para adaptarse al tipo de instalación que necesitan los ebuilds a base de regex (básicamente el Makefile y alguna que otra cabecera)

Hoy en día regex esta muy extendido su uso y utilidad en muchas aplicaciones.

D

#83 "Y de aventuras como cuando hace unos años hice un script que configuraba una instalación "default" debian, como servidor postfix/dovecot/bind/web/firewall y unas cuantas opciones sobre un dominio dado a base básicamente de sed"

Eso tambien lo hice yo con sed y bash, pero al final con un script con Perl era igualmente manejable

G

#84 en el fondo esas cosas con lenguajes interpretados, shell script y demás los haces con lo que más conoces o te sientas más cómodo. Yo nunca fui de perl y rara vez lo necesite.

D

#80 Por cierto, vi(m) tambien soporta regex de (s)ed (porque vienen de lo mismo).

Lanza vi sobre un ejemplo.

cp /etc/fstab ~
vi fstab
:s/cadena/reemplazo/p

D

#63 emacs -q

IvanDrago

#2 thx!

IvanDrago

#12 mi primer comando tras terminar cualquier instalación de linux es:
apt-get install vim

lol

D

#12 te cagas en sus muertos pq vas a tardar un poco más que con el Vim pero nada mas

Firmado un administrador de AIX, Solaris y Linux tan recortados que vienen con Vi en vez de Vim

#18 lo malo es cuando no llegas a ningún repositorio no obstante en mi caso es "yum install vim" pero pq tu vendrás de debian/Ubuntu

tul

#28 como no tengas un poco soltura con los comandos basicos no serias el primero que sale corriendo, lo he visto unas cuantas veces.

IvanDrago

#28 No, yo llegué a debian, me negaba a creer que el desastroso sistema de rpm allá por 2001 fuese lo más eficiente que hubiese en linux... lol

Observer

#18 Yo me ahorro quitarlo, porque no viene por defecto. ^^
Es lo que tiene gentoo.

IvanDrago

#40 yo me cansé de compilar lol

Observer

#43 Precisamente elijo gentoo porque no tengo que compilar, lo hace solo igual que resolver las dependencias.
Con solo las características que yo quiera, no las que elijan otros.

ktzar

La mejor inversión que he hecho ha sido aprender vim.

ragnarel

Me hace muchísima gracia ese elitismo del que gozan las personas que creen estar por encima del resto por saber usar Vim, alardeando de ello en blogs y tweets. A algunos de ellos se lo he visto hasta en el currículum. Todo eso me parece patético.

Y eso que yo lo uso.

D

#54 yo tengo en mi curriculo

nano FTW

ragnarel

#56 seguro que te abre muchas puertas tenerlo en el currículum. roll

D

#57 ahora en serio, desde que conozco sublime text, paso de VIMs, EMACS y demás.

D

#59 Sublime es propietario y consume cojón y medio.

elrichal

#59 fuck yeah! sublime power! Aunque este siendo mantenido por un tio!

Eso sí, cuando tienes que editar una entrada de dns en "aquel" servidor que lo montó "veteasaberquién" y esta con centos ... haces vi, y aparece a tu lado ... se te cae la lagrimilla y das gracias a Santa Tecla por ese regalo divino.

D

#66 Mientras no tengas "ed" como algunos cacharros incrustados, puedes darte con un canto en los dientes. Aunque manejar ed es facil, es algo tedioso, pues editas línea a línea.

D

Para ediciones rápidas son más cómodos que por ejemplo nano, ahora bien para el trabajo continuado necesito de no tener que estar recordando comandos, prefiriendo atom o vs code.

Pentium-ll

#6 Sí, para editar archivos de configuración y esas cosas yo también prefiero el 'nano', pero hay que admitir que Vim es una puta pasada y en el momento en que vas pillando un poco de práctica para realizar cualquier tarea pues se convierte en tu favorito...

t

#6 Discrepo. Para ediciones rapidas nano es mucho mejor que vim porque no tienes que cambiar de modos. Yo uso nano cuando tengo que cambiar algo en algun fichero de configuracion.

VIM funciona mejor con ficheros grandes y varios de ellos. Los plugins que tiene lo hacen el mejor editor disponible.

D

#19 Yo no uso apenas nano, ni para pequeños ni para grandes , uso vim para pequeñas modificaciones o para ficheros que necesitan mayor nivel de permisos. Para el desarrollo prefiero uno gráfico al estilo gedit, atom o visual studio code.

Tal como dices vim tiene una gran potencia con los plugins, pero no he ahondado en ello ya que por desgracia mi trabajo es sobre windows, aunque en casa si uso linux. Hace unos años si trabajaba con linux y ahí si usaba el 100% del tiempo vim e iba avanzando en su uso, pero como he dicho con windows me he acostumbrado a esos dos editores gráficos que son multiplataforma.

D

#6 no te hace falta recordarlos aquí tienes un resumen de comandos

http://vim.rtorr.com/

D

#27 Muchas gracias, me quedo con el enlace .

Aunque me dices que no hace falta recordarlos porque puedo ver una página hay un pero, esto no es productivo.
Si te tienes que ir a un navegador sea de consola o no para ver los comandos, no estás usando el tiempo para producir sino como tiempo de aprendizaje. Me parece genial, pero que seas consciente de ello y que te hayas planificado este tiempo para ello, desde mi parecer.

En el resto de casos en los que se necesita concentrar los esfuerzos en una tarea, no puedes pararte a ver que comando era aquel que hacía X, en estos casos se debería usar los editores con el que ese momento te sientas más cómodo y que te permita poner el manejo del editor en modo automático, concentrándote en tu tarea principal. Si hoy es vim pues usa vim, que es nano pues nano, .... Creo que lo importante es usar la que más te venga bien.

Evidentemente esto no solo aplica a los usuarios sino también a los que participan en el desarrollo de estas herramientas que tienen que tenerlo en cuenta para ver tu alrededor y ver donde puedes mejorar o si debes abrir otra línea para aquello que no encaje. Vim tiene una curva de aprendizaje alta, ahora bien, en el momento que llegues a un conocimiento eres muy productivo.

D

#42 busca "vim cheatsheet pdf" las hay de una página por las 2 caras te lo puedes imprimir en una chuleta de una sola hoja e incluso tener en el movil

D

#86 muchas gracias, lo conocía, cuando trabajaba con linux lo tenía impreso y colgado en frente mía

manuellois

Real Programmers

https://xkcd.com/378/

lol lol lol

Acido

#41 LOL lol

xkcd wins!

Pentium-ll

Me pregunto si Stallman usará Vim o Emacs...

Por cierto, el otro día instalé esto en la tablet:
https://play.google.com/store/apps/details?id=net.momodalo.app.vimtouch&hl=es

t

#13 ahi esta la broma (supongo)

musg0

#14 supongo que seguirá haciendo la broma de san ignucius.
Yo soy de Vim. Nunca llegué a entender la filosofía de uso de Emacs y me hubiese gustado que se explorara el modo de uso "modal" en otros ámbitos fuera de los editores de texto

ChukNorris

Donde esté el Word ...

redscare

La verdadera pregunta es... indentar con espacios o con tabulador? lol

D

Yo también quería aprender Vim pero también quería tener vida social

PD: en realidad uso Vi y Vim todos los días 😂

d

¿porque usar :wq cuando puedes ahorrarte 1 keystroke usando : x (sin el espacio que si no esto pone un emoticono)?

darccio

Y yo ahora mismo programando una migración en Python con Vim lol Aunque reconozco que últimamente uso más Atom para desarrollar, pero no tardaré mucho en probar si tiene algún modo "vi".

#33 Los hombres de verdad usamos Shift + ZZ para salir lol

d

#34 Siguen siendo más keystrokes.

darccio

#39
Shift + ZZ -> 3 teclas
: x -> 3 teclas (en realidad es Shift + . + x) lol

Además, el "zz" se puede hacer con una sola mano.

d

#89 Tienes toda la razon no se porque no he contado con el shift + .... y ahora que o pienso faltaría un intro después.

Uno debe reconocer la derrota, caballero, desde ahora usare shift+zz.

darccio

#99 Los caminos de Vi truculentos son, joven padawan. Derrotado no te he, iluminado sino.

l

Seguimos con el flamewar... la cosa es muy simple, si te dedicas a sistemas y programación vim, (ligero y vi esta en todos los SO serios), si solo usas el editor de texto para programar y documentación emacs...

D

#26 vete a pastar.

l

#36 A hacer pasta, dirás...

D

#87 sabes como hace pasta un usuario de emacs?

l

#94 Nope

musg0

#94 libera el software y cobra el soporte. Badum tsss

provotector

Con diferencia VI es el PEOR programa que ha podido engendrar el ser humano en milenios. Algo tan fácil y sencillo como escribir, lo convierte en una tarea tediosa, horrible, confusa y estresante pero espera, porque para guardar los cambios que has hecho es todavía peor. Para modificar una palabra de un documento, alomejor te toca salir y volver a entrar 4 veces al programa porque no sabes ni en que modo estas ni puedes guardar los cambios ni puedes hacer nada más que cagarla y cagarla cada véz más hasta que decides perder los cambios, reiniciar el programa y volver a intentarlo. Vi hace que el maltrecho y desfasado EDIT de MS-DOS parezca un programa hecho por dioses venidos del futuro para traer la paz en el mundo. Si pudiera tener delante al tio que programó VI me cagaría en su puta madre y me quedaría muy muy muy agusto. Todo ese pedazo de MIERDA es VI y a día de hoy. Hecho en los años 70, todavía es el editor de textos "por excelencia" en el mundo Linux, lo gracioso es que de todos los "linuxeros" prácticamente ninguno sabe usarlo. Lo primero que hacen es descargarse NANO o incluso Gedit nada más instalarse una distribución. Por cierto en Linux, si tienes el teclado en inglés prepárate para investigar como se pone en Español. En cada distro se hace de una forma distinta. En MS-DOS ponías "keyb sp" y a funcionar como en el paraíso.

D

#61 Aprende a usar vi, inutil lol lol. Escribe esto en la terminal:

echo "set showmode" > ~/.exrc
echo "set ruler" >> ~/.exrc

Ostia, MILAGRO, se ve tanto la línea en la que estás, el caracter como el estado abajo a la derecha.

vi torpe.txt
(pulsa enter)

~
~
1,1 Insert

Yo te obligaba a usar ed/ex, entonces si llorábais lol lol lol

". En cada distro se hace de una forma distinta."

"loadkeys es" en la TTY, "setxkbmap es" en X.

En OpenBSD es con wsconsctl, tanto para X como terminal, pero el instalador te lo pone todo en español de serie lol lol

M

#61 Pregúntate por qué tantos desarrolladores lo usan (usamos). La curva de aprendizaje es dura al principio desde luego y además, hacen falta plugins para darle vidilla. Pero es que tiene demasiadas ventajas haciendo cualquier cosa sin necesidad de tocar el ratón. Y además, no cambias de editor cuando te conectas por SSH a otra máquina por ejemplo. Por otro lado, una vez lo aprendes, sabes que vas a poder seguir utilizando durante décadas
Qué no sea la clase de programa que se adapte a tu forma de trabajar ya es cosa de cada uno pero ni mucho menos es una mierda de editor.

Fernando_x

Vaya, no sabía que vi tenía comandos para hacer las cosas que puede hacer cualquier editor moderno. Que cosas.

D

#49 ¿Incluso un comando y pegar dentro del editor el resultado automáticamente? ¿Búsquedas y reemplazos con expresiones regulares?

Fernando_x

#58 Lo segundo PSPad puede. Lo primero parece que sí tiene extensiones que lo permiten, pero nunca lo he necesitado, así que no sé. ¿Puedes con Vim seleccionar/modificar el juego de caracteres que quieras o abrir/modificar un archivo via ftp o grabar/ejecutar macros o editar en hexadecimal? ¿O añadirle extensiones que te den la funcionalidad que necesites?

D

#67 "¿O añadirle extensiones que te den la funcionalidad que necesites?"
Si. Desde siempre. Su catálogo de plugins se mea en el de los demás.
"¿Puedes con Vim seleccionar/modificar el juego de caracteres que quieras o abrir/modificar un archivo via ftp o grabar/ejecutar macros o editar en hexadecimal?"
Si.
Aunque como editor hex, hexer es superior y usa las teclas de vi.
Sobre el juego de caracteres, vim simplemente lo respeta. Otros se ciscan en el, como los editores bajo Windows.

Fernando_x

#68 Es decir, lo que decía, que Vim puede hacer las cosas que hace un editor moderno. No lo sabía.

D

" vim, editores, unix"

Errónea. Vim nació en el Amiga. Si, el de@frankiejcr

frankiegth

#47 No estoy muy seguro de eso. De hecho creo que el AmigaOS y su CLI está inspirado en Unix, casi todo programado en Ansi C.

frankiegth

#55 Pues no lo sabia. Hay que ver lo que son las cosas.
(CC #53)

elmike

Lo del vi es una historia de amor odio, cuando eres "jovezuelo" o novato acostumbrado a editores "topegama" en interfaces gráficas hechas pestes de vi y cualquier otra cosa que parezca sacada de un monitor de fosforo con 80 lineas, sobretodo cuando lo ejecutas por primera vez sin mirar la ayuda y estas media hora para salir del mismo.

Pero tal cual pasa el tiempo y has tenido que acceder a la consola de miles de servidores de innumerables distribuciones, "cacharros" con un linux embebido sean routers, nas, o cafeteras para editar un archivo de texto, sabes que por cutre o limitada que sea esta distro, vi esta ahí para facilitarte el trabajo con saber cuatro comandos(insertar, guardar, salir y eventualmente buscar).

D

#91 No es lo mismo tener que aprenderte atajos de teclado hasta para quitar el programa que configurarlo en 5 minutos. Ej. Vim, Emacs vs Sublime o Notepad++, no llegan a ser IDEs ninguno pero son más que suficientes para lenguajes como javascript, python etc. Si tienes la desgracia que tener que programar en Java pues tendrás que tener un IDE completo.

D

Cualquier IDE que requiera un tiempo de aprendizaje es una pérdida de tiempo.

D

#50 cualquier ide decente requiere un tiempo de aprendizaje, salvo que consideres notepad un ide

t

Os recomiendo usar neovim en vez de vim. Es basicamente lo mismo, pero reorganizado. Funciona en general mas rapido, y es asincrono.

musg0

#20 el vim 8 parece que trae cambios para que neovim no le coma la tostada.
Entre ellos la ejecución asíncrona de scripts y eliminación de ports antiguos que enguarran el código

C

Para mí el principal problema tanto de EMACS como de Vi es que se crearon antes de muchos estandares de facto que están en la mayoría de aplicaciones. Por ejemplo las combinaciones básicas C-c,C-v,C-p (aunque haya intentos de normalizarlo como www.ergoemacs.org ). O en vi el poner las teclas básicas de desplazamiento en la misma fila (hjlk) en lugar de "estilo flechas" (las flechas del teclado son de los 80). Todo esto hace que tengas que ser consciente de en que aplicación estás.

D

#74 En Emacs el problema que tiene es que la tecla Alt estaba donde hoy la tecla Ctrl, y Crtl, donde Bloq Mauys.

En Linux puedes cambiar el teclado para ajustarse a eso sin problemas.
http://xahlee.info/kbd/i/lm/Space-Cadet_keyboard_2.jpg

Sobre vim, esa postura es mejor ya que la mano descansa sobre hjkl y es ergonómica.

C

#76 Positivo por el teclado! me ha encantado. Si se hubiese impuesto algo así seguro que los lenguajes de programación serían más vistosos (Greek + Simbolo). No critico la elección de las combinaciones de teclas, solo que por motivos ajenos a los editores tenemos otras combinaciones en la cabeza que entran en conflicto y hacen más difícil usarlos, sobretodo al principio.

D

Vim tiene una curva de aprendizaje bestial, pero las ventajas son tremendas. No tienes por qué usar un ide para cada lenguaje. Puedes conectarte a cualquier sitio por ssh y tienes vim (o vi en el peor de los casos). Creo que hay pocos editores que me hayan aportado tanto como Vim. Evidentemente no es un editor para cualquiera, y menos para blandengues y perezosos. Si eres programador y estás habituado a la consola, vim hará que te salga pelo en el pecho y te salvará la vida en muchas ocasiones. Y es software libre. Los que despotrican no lo conocen.

t

En mi caso, que utilizo Vim para todo (+tmux para cosas complejas), la única tentación que tengo para pasarme a Emacs (mediante Spacemacs probablemente), es org-mode, pero el tema aún me da bastante pereza.

1 2