Vim, Emacs ja muut tehokkaat tekstieditorit

  • Keskustelun aloittaja Keskustelun aloittaja Jumi
  • Aloitettu Aloitettu
Minusta ei ole oikein mielekästä edes vertailla VSC:tä ja vastaavia johonkin Sublimeen tai Vimiin.

Kyllä kai noiden vertailu on hyvinkin mielekästä. Ne ovat monilta osin toistensa substituutteja ja niitä käytetään ihan samoihin asioihin. Vim on toki jossain määrin poikkeus, sillä se toimii pelkässä terminaalissa ja on oletuksena lähes jokaisessa Linuxissa käytettävissä. Vimin opettelu lähes pakollista jos yhtään joutuu etäyhteyksiä ottamaan.

Mutta VSC:tä ja Sublimea käytetään ihan samoissa tilanteissa. Kummatkin ovat pääasiassa nimenomaan (koodi-)editoreja kummassakin jossain määrin samanlaiset ominaisuudet.
 
No eivät ole. Jos VSC olisi pelkkä koodieditori, niin käyttäisin edelleen Vimiä sen sijaan.

Vimistä puuttuu, tai tuki on heikonlainen:
  • Debuggeri. Ja juu, jotenkin gdb:n saa viritettyä, mutta monellako toimii yhtä kätevästi kuin VSC:ssä?
  • Jupyter-integraatio,
  • Yhtä hyvä blame ym. kuin GitLensissä,
  • Chrome-debuggeri,
  • Yhtä helposti lisättävä kielituki (mm. code completion ja coloring) - tämä on kätevää kun kokeilee ja testailee eri kieliä.
Esimerkiksi Python-integraatio on erinomainen ja TypeScriptin osalta tietysti paras. VSC teki taannoisesta etätyörumbasta huomattavasti siedettävämmän, kun varsinkin aluksi x2go meinasi tökkiä välillä toimistolle. VSC:hen remote extensions ja pystyin koodaamaan Python-kikkareita kuin ne olisivat olleet samalla koneella. Normaalikonstilla, eli vaikka ssh-putkellakaan tuo ei olisi ollut yhtä kätevää, koska remote extensions piilottaa hienosti pienet verkkoviiveet. Eli käyttäjän kannalta ei kirjoittaessa tule jotain sekunnin viiveitä napin painalluksen ja sen perillemenon välillä.

Edelleen, VSC on IDE, Vim ja Sublime Text ei ole.
 
VSC on IDE, Vim ja Sublime Text ei ole.

Sublime ja VIM ovat ihan samalla tavalla IDEjä (antavat osin samoja toiminnallisuuksia) kun laitat niihin sopivat plugarit. Jokaisella varmaan omat vahvat osa-alueensa.

VSC sanoo ihan itse: "Visual Studio Code is a lightweight but powerful source code editor which runs on your desktop and is available for Windows, macOS and Linux.


Wikipedia:

"Visual Studio Code, also commonly referred to as VS Code,[9] is a source-code editor made by Microsoft for Windows, Linux and macOS."


Jos VSC on sen itsensä mielestä koodieditori, niin kyllä se sitten on koodieditori. Toki nuo kaikki ovat paljon muutakin ja niitä saa kutsua ihan miksi tahansa. Mutta devaajat käyttävät jokaista noista ihan samaan käyttötarkoitukseen - myös työmaailmassa. Ja tietenkin niitä voi ja kuuluu verrata toisiinsa ja usein verrataankin. En oikein keksi, miksi tuohon hirttäydyit niin voimakkaasti. Osa devaa vimillä, osa Sublimella ja (selvästi suurin) osa VSC:llä. Siis webbidevauksessa. Java- ja C-tyypeillä omat työkalunsa.

(Omasta mielestäni siis VSC on noista selvästi paras kaikella tavalla omassa käytössäni, jos tämä ei jo tullut selväksi.)
 
Onhan se _myös_ koodieditori, harvassa on IDE:t, joissa ei voi koodia muokata.

Vai millä perusteella se ei ole IDE? Mitä siitä puuttuu? Vrt saako vaikka Sublimeen samanlaisen debuggauksen?
 
Vim on toki jossain määrin poikkeus, sillä se toimii pelkässä terminaalissa ja on oletuksena lähes jokaisessa Linuxissa käytettävissä. Vimin opettelu lähes pakollista jos yhtään joutuu etäyhteyksiä ottamaan.
On Vimiin GTK:lla tehty GUI, mutta ei se taida toki poiketa hirveästi terminaalissa käytettävästä.
 
Vai millä perusteella se ei ole IDE?

Lues vähän tarkemmin. Sanoinko jossain, että se ei ole IDE? En sanonut. Sanoin, että nuo kaikki ovat IDEjä kun niihin asentaa sopivat plugarit.

saako vaikka Sublimeen samanlaisen debuggauksen?

Sublimeen saa debuggauksen. Kaikkien noiden debuggaukset ovat erilaisia. Tämä ainakin yrittää toimittaa mahdollisimman samanlaisen debuggauskokemuksen kuin VSC:


Vimiin saa esim. Vimspectorin:


Ja käsittääkseni VSC ei ole mikään IDE:n määritelmä.
 
On Vimiin GTK:lla tehty GUI, mutta ei se taida toki poiketa hirveästi terminaalissa käytettävästä.

Joo, olen tuota joskus muistaakseni käyttänytkin kun Vimiä opettelin. Tarkoitus oli kirjoittaa, että vimille riittää pelkkä terminaali, mikä on ehdoton juttu etäyhteyksissä.
 
Ja käsittääkseni VSC ei ole mikään IDE:n määritelmä.
Kysyinkin, että mitä siitä sitten oikein puuttuu? Onko Visual Studio IDE? Tai Eclipse? Mikä niistä tekee IDE:n mikä VSC:stä puuttuu out-of-the-box?

IDE on toki häilyvä termi, mutta jos väittää, että joku ei ole sellainen, niin olisi kiva kuulla joku perustelukin eikä vain inttämistä.

Tuo vimspector on kyllä kiinnostavan kuuloinen, voisi joskus kokeilla. Tosin taitaa viedä tovin konffata toimimaan. Osa noista isommista plugareista vaan tahtoo olla järjettömän raskaita. Esimerkiksi OmniCppComplete oli minusta käyttökelvoton. Ja lisäksi sen käyttöönotossa oli aina turhan monta vaihetta (ctags/etagsin kanssa värkkääminen).
 
Joo, olen tuota joskus muistaakseni käyttänytkin kun Vimiä opettelin. Tarkoitus oli kirjoittaa, että vimille riittää pelkkä terminaali, mikä on ehdoton juttu etäyhteyksissä.

Kun Microsoft vihdoin toteuttaisi VSC:hen sen että voi editoida remote tiedostoja sudona niin ei tarvisi Vimiä mihinkään.
Jotenkin ironista ekana avata VSC:n SSH sessio remotekoneeseen ja sitten avata sen session terminaalista Vim jotta voi editoida jotain sudo-oikeuksilla.
 
Tuo kuulostaisi äkkiseltään tietoturvaongelmalta. Voi olla tosin ratkaistavissa, en ole varma.

Mutta en kyllä itse näe tuolla hirveästi tarvetta. Laita ennemmin tiedosto/ryhmäoikeudet kuntoon serverillä.
 
Kun Microsoft vihdoin toteuttaisi VSC:hen sen että voi editoida remote tiedostoja sudona niin ei tarvisi Vimiä mihinkään.
Jotenkin ironista ekana avata VSC:n SSH sessio remotekoneeseen ja sitten avata sen session terminaalista Vim jotta voi editoida jotain sudo-oikeuksilla.

Joku plugari tuolle on: Save as Root in Remote - SSH - Visual Studio Marketplace

En ole tosin testannut. Tässä issue aiheesta:


Tuo kuulostaisi äkkiseltään tietoturvaongelmalta.

Olisiko se sen enempää on tietoturvaongelma kuin että otat manuaalisesti ssh-yhteyden ja kirjoitat "sudo vi file.txt". OS sitten antaa oikeudet tai ei anna.
 
Riippuu siitä, millainen VSC:n tietoturvamalli on. Käyttääkö remote extensions puhtaasti ssh-yhteyttä? Ssh on kuitenkin koeteltua tekniikkaa eikä siinäkään oikein taida olla turvallista tapaa avata ssh-yhteyttä suoraan sudoksi. Komentojen ajaminen ssh-yhteyden yli sudonakin tahtoo johtaa siihen, että se salasana on sitten plaintextinä jossain logissa (mitä ei tietysti tapahdu jos ajat sudo-komennon remotessa).
 
Riippuu siitä, millainen VSC:n tietoturvamalli on. Käyttääkö remote extensions puhtaasti ssh-yhteyttä?

Tuskin riippuu. Siis meinaan että kuulostaisi todella omituiselta, jos VSC voisi yhtään millään tavalla ohittaa kohdekäyttiksen tietoturvaa oikeuksien suhteen. Eli jos mulla on käyttäjä, joka ei saa sudotella remotessa, niin mikään taika VSC:ssä ei voi tuota ohittaa. Sehän olisi äärimmäisen vakava tietoturvariski SSH:ssa. Se yhteys siis otetaan ssh:lla ja tietyllä käyttäjällä, jonka oikeudet määrittää vain se kohde-OS. Lokaali-VSC ei voi myöntää oikeuksia.
 
Ei sen tarvitse ohittaa, vaan tarkoitan esimerkiksi cachetusta ja snooppaamista.
 
Varmaan tarkoitetaan samanlaista ominaisuutta mitä esim itselläni on vim:ssä eli vaikka olenkin peruskäyttäjänä kirjautuneena niin saan suoraan vim:stä sudo-käyttäjänä tallennettua tiedoston. Tallennuksen yhteydessä kysyy vaan joka kerta salasanaa. Eli itse tuon toteutin tähän tyyliin vim:ssä: (tuo siis .vimrc:ssä ja :w -komennon sijaan painan <leader>S)

map <leader>S :w !sudo tee "%" > /dev/null<CR>

Ei kai tuollaisen toteuttaminen muihinkaan editoreihin olisi mikään amerikan temppu.
 

JetBrainsin Vscode "vastine" on nyt public previewssä jos sitä haluaa kokeilla.
 
Onko kukaan siirtynyt Vimistä Emacsiin? Kauanko se otti aikaa? Oletteko lukeneet ihan kirjallisuutta Emacsiin vai ainoastaan käyttänyt tarpeeksi pitkään ja aina vähän oppinut lisää?

Aloin opettelemaan Rustia ja hyvin äkkiä alkoi Vim tuntumaan monimutkaiselta, toisin kuin C:llä, johon sitä vuosia onnistuneesti olen käyttänytkin. Rustilla kun jokainen ohjelma on projekti, eikä pelkästään tiedosto. On minua houkutellut tuo (Doom)Emacsin opettelu jo kauan, joten ajattelin nyt olevan oiva tilaisuus.
 
En ole siirtynyt Vimistä Emacsiin, mutta olen ottanut Spacemacsin käyttöön Vimin rinnalle. Emacsissa on ollut aina luotaantyöntävää se hirveä määrä conffaamista ja säätämistä, mutta tuossa tuntuu kaikki toimivan jotakuinkin out of the box. Mulla on tossa tietysti käytössä Vimin keybindit joiden kanssa se tuntuu yhdistävän molempien parhaat puolet.
 
Emacs ei käännä tiedostoja. Ei tapahdu mitään vaikka yrittää suorittaa koodia.

kuva...

Ei käänny vaikka käyttäis jotain.c

Ajattelin että kokeilen tota a.out:ia kun ei jotain.c toiminu myöskään...
 
Emacs ei käännä tiedostoja. Ei tapahdu mitään vaikka yrittää suorittaa koodia.

kuva...

Ei käänny vaikka käyttäis jotain.c

Ajattelin että kokeilen tota a.out:ia kun ei jotain.c toiminu myöskään...
Onks sulla Makefile? Ellei, niin muistaakseni makelle pitää antaa myös lähdetiedostonnimi ilman .c päätettä, jos nyt muistan oikein (eli make -k jotain).
 
C:
$ ls *.c
jotain.c
$ make -k a.out
make: *** No rule to make target 'a.out'.
$ make -k jotain.c
make: Kohteelle ”jotain.c” ei tarvitse tehdä mitään.
$ make -k jotain
cc     jotain.c   -o jotain
Tässä vielä nopea testi ihan vain konsolissa.
 
Miksi minulla jää Emacsissa tuo alin rivi piiloon?

edit. Korjasin ongelman konffi-tiedostossa.
 

Liitteet

  • Kuvakaappaus 2024-07-21 14-37-40.png
    Kuvakaappaus 2024-07-21 14-37-40.png
    17,8 KB · Luettu: 95
Viimeksi muokattu:

Statistiikka

Viestiketjuista
257 000
Viestejä
4 465 826
Jäsenet
73 879
Uusin jäsen
Torvelo

Hinta.fi

Back
Ylös Bottom