Making Minimalist Text Editor in C on Linux

Поділитися
Вставка
  • Опубліковано 14 січ 2025

КОМЕНТАРІ • 121

  • @alangamer50
    @alangamer50 Рік тому +68

    No Intro, no context, no nothing, he just jumped straight to the code and I love that. This was really useful and I literally just found out about the man command

  • @emirbrkic6649
    @emirbrkic6649 Рік тому +265

    We need more chanel like this : C, Linux and vim, without an intro only pure clean code

    • @enderman4
      @enderman4 Рік тому +5

      Linux (wsl2)

    • @hellohabibi1
      @hellohabibi1 Рік тому +13

      ​@@enderman4still is linux

    • @TheLukasBer
      @TheLukasBer Рік тому +5

      Check tsoding daily. Awesome channel with similar characteristics.

    • @phitc4242
      @phitc4242 Рік тому

      I swear I'm on the verge of doing this, but I'm not thaz good as he is lmao

    • @MBrieger
      @MBrieger Рік тому +5

      Seriously, I am 58 years old and learned UNIX and C way back when.
      The Author needs to get some typing skills. There are more errors than actual Code.

  • @yuyuyuyuyuy484
    @yuyuyuyuyuy484 Рік тому +23

    No intro, only keyboard sounds and simple explanations. Love it.

  • @rogerwinright2290
    @rogerwinright2290 Рік тому +32

    Your channel is probably my new favorite programming channel. Quick to the delivery and gives good tips and tricks along the way!

  • @debajyatidey9468
    @debajyatidey9468 Рік тому +5

    Finally found a channel where I can know & learn practical applications of C. Ig this channel is a blessing for me.

  • @tech477
    @tech477 11 місяців тому +1

    Thank you for not wasting our time with useless talking. Raw, basic, straight to the point - fantastic channel.

  • @nyzss
    @nyzss Рік тому +12

    I’m learning C and these tutorials are a blessing, thank you very much for the content.
    If there was one thing I’d like very much is maybe longer and more in depth tutorials.

  • @fuzzy-02
    @fuzzy-02 10 місяців тому +1

    I loved the commentary and showing manual while writing the code without over explaining things as if everyone watching isn't at least a basic programmer. Basics provided and the rest for us.
    Thank you!

  • @snowpirate2652
    @snowpirate2652 Рік тому +2

    This looks really cool! I tried the web server example you showed which worked really well and helped me to learn a little more about C, so I'm looking forward to giving this a try when I can. Please keep posting these great vids!

  • @themannyzaur
    @themannyzaur Рік тому +3

    This is fantastic!
    Glad I found your channel

  • @JotaDevelopment
    @JotaDevelopment Рік тому

    Everything in this channel is so good. I'm currently learning C, just because I have time enought to learn, and this kind of videos help me a lot. Cheers, Nir!

  • @theoriginalneckbeard
    @theoriginalneckbeard Рік тому

    Such a great channel. Without all that cringy clickbaiting, without all those cringy thumbnails. Just great content. Keep it up!

  • @starc0w
    @starc0w Рік тому +6

    Very cool channel, really great!🍀Thank you very much!
    Small note about the code:
    If you read in 1024 bytes with fread, which is exactly the size of your buffer, you run the risk of overwriting the 0-termination of buffer (as soon as the file is larger than or equal to 1024 bytes).
    This means UB with printf("%s", buffer).

    • @nirlichtman
      @nirlichtman  Рік тому +5

      Thanks :) that is a good point! when reading strings, it is a good practice to read one less than the buffer length into the zeroed buffer to avoid this issue. Remember that as I mentioned in the beginning of the vid, the code is just for fun and not for production

  • @john.darksoul
    @john.darksoul Рік тому +3

    You make writing code in C seem enjoyable :D

  • @rafaeloledo
    @rafaeloledo Рік тому

    this is the type of channel i wish i was watching on my first days of programming :)

  • @hermessantos181
    @hermessantos181 Рік тому

    Bro, your channel is exactly what i was searching, your videos are amazing, thank you for sharing it

  • @shauncheng3504
    @shauncheng3504 5 місяців тому

    straight to the point, that's why I like this channel!

  • @dailydoseofshtposts6891
    @dailydoseofshtposts6891 Рік тому +1

    Bro youre so underrated, i just found about you yesterday and i was fascinated, you have superb potential!

  • @Maagiicc
    @Maagiicc Рік тому +5

    This is gonna be the next vim 😳

    • @SimGunther
      @SimGunther Рік тому

      More like ed: The "official" UNIX text editor 😅

  • @ullaskunder
    @ullaskunder Рік тому +7

    I wish I hadn't give up C

    • @SimGunther
      @SimGunther Рік тому +12

      It's never too late to pick it back up :)

  • @wispysparks
    @wispysparks Рік тому +1

    Engaging, straight to the point, keep up the good work man!

  • @hakonh3252
    @hakonh3252 Рік тому +16

    It is fine to ignore error handling and stuff like that for toy examples, but consider showing or at least mention the bounds checked versions of the string manipulation functions. The old ANSI versions are basically deprecated as they are too dangerous to be used in actual production code.

    • @zeektm1762
      @zeektm1762 Рік тому

      What alternative for low level I/O do you recommend?

    • @Mike-gs7eo
      @Mike-gs7eo Рік тому

      strncpy over strcpy for example. The n variants of these routines require a size parameter used to bound access. @@zeektm1762

    • @hakonh3252
      @hakonh3252 Рік тому +3

      @@zeektm1762 I didn't say anything about I/O. I'm talking about string manipulation, like strncpy, strncmp, memchr.

    • @linsoe-u4d
      @linsoe-u4d Рік тому

      @@hakonh3252 so what alternative for those functions? Can you explain more

    • @johnshaw6702
      @johnshaw6702 Рік тому +4

      ​@@linsoe-u4dThe functions he is using are fine under these known circumstances. If you don't know the string source, then you should use stricter methods. Today that means functions like strcpy_s, that require specifying the maximum length of the acceptable string. Thus avoiding buffer overruns. You can easily craft your own methods of avoiding such issues, I did just that for many years. Its only necessary in cases that you are not in full control of the data you are processing or if you are creating a library, which, by definition, means you're not in control of its usage.
      When I first started programming, I gave my personal guarantee that my code would not crash the system, because I validated and tested everything. I, of course, didn't guarantee against hardware or memory failure, which was out of my control. Then Windows came out I couldn't guarantee anything, because my code was dependent on Windows and it's drivers, which was totally outside my control.

  • @TheGrigerz
    @TheGrigerz 7 місяців тому

    Found this channel is blessing to me.. thanks you nir..,

  • @cursedfox4942
    @cursedfox4942 Рік тому

    That’s beyond minimalist and a lot of code for something so simple

    • @spiralplayz3018
      @spiralplayz3018 Місяць тому +1

      @cursedfox4942 in what way is that a lot of code?

  • @byronhambly
    @byronhambly Рік тому +8

    Hey, just found your channel, subbed! Small suggestion: why not split the screen vertically instead of horizontally?

    • @bity-bite
      @bity-bite Рік тому +2

      he can read more stuff if it's split horizontally

    • @slendi9623
      @slendi9623 Рік тому

      @@bity-bite disagreed

    • @nirlichtman
      @nirlichtman  Рік тому +1

      That's a good suggestion I actually mostly use horizontal split for some reason but I should definitely use vertical more especially for code with short lines, thanks!

    • @byronhambly
      @byronhambly Рік тому

      @@nirlichtman fair enough for your workflow! I agree that with shortish lines and a landscape screen, vertical split would work better for your videos. All the best and happy hacking!

  • @malokbuyred2495
    @malokbuyred2495 2 місяці тому

    this guy will not be replaced by AI

  • @animeshsarkar295
    @animeshsarkar295 Рік тому

    I like the teaching style. Thank you Sir for providing useful contents

  • @mrstanlez
    @mrstanlez 7 місяців тому +1

    Usefull. Can you make it with gtk? Thank you.

  • @EinSatzMitX
    @EinSatzMitX 5 місяців тому +2

    Am i seeing this right? Youre on linux ( atleast using dwm) but youre also in a Windows terminal which is running wsl

  • @razvandedu5285
    @razvandedu5285 Рік тому +2

    Dude is coding without autocomplete... crazy!

  • @bartholomewjoyce
    @bartholomewjoyce Рік тому +2

    Okay, add syntax highlighting and this can be my main editor

    • @nirlichtman
      @nirlichtman  Рік тому

      Hmm, interesting idea for another video :)

  • @sowkwlwlpz
    @sowkwlwlpz Рік тому +1

    That's kinda how the text editor "ed" works.

  • @Mike-gs7eo
    @Mike-gs7eo Рік тому +5

    Cool vid but this is super dangerous code. Strcpy should almost never be used. What happens if you edit a file here with a line longer than 1024 bytes :)

    • @juanchole1184
      @juanchole1184 Рік тому

      Why strcopy is dangerous?

    • @Mike-gs7eo
      @Mike-gs7eo Рік тому +2

      @@juanchole1184 Strcpy does not take a length parameter and will keep copying bytes to the destination until it encounters a NULL byte in the source string. If the source is larger than the destination, then it will overflow which can lead to exploitable memory corruption

    • @nirlichtman
      @nirlichtman  Рік тому

      The code is just for fun and not for production (as the disclaimer in the beginning of the vid) so I skip many additional checks besides the strcpy case :) If I would have written this for actual production use I would handle this by adding a check for the lengths before calling strcpy to make sure it would not overflow

    • @zombie_pigdragon
      @zombie_pigdragon Рік тому

      @@nirlichtman It would have been nice if (maybe even in editing) you'd added a disclaimer when writing particularly dangerous code, since there's a high risk people won't know what's safe/dangerous to write and will blindly copy the (entertaining, btw) video they've seen online.

  • @antonw8134
    @antonw8134 Рік тому

    If you liked this video, you may also like the kilo text editor. Do a search and enjoy!

  • @siddharthbisht1287
    @siddharthbisht1287 Рік тому

    thank you, this is really cool❤❤❤

  • @littlecurrybread
    @littlecurrybread Рік тому

    It would be fun if you tackled one of the c projects at codecrafters like the bittorrent clone

  • @sollybrown8217
    @sollybrown8217 Рік тому

    Good video. Like the stb small libs in c one.

  • @abiiranathan
    @abiiranathan Рік тому

    No nonsense coding! No fluff

  • @foxmoss_
    @foxmoss_ Рік тому

    these vid have been making me use the man pages more :)

  • @aGuyFromFBI
    @aGuyFromFBI Рік тому

    Very good Video, straight to the point 👍.

  • @MattG-lc6rm
    @MattG-lc6rm 6 місяців тому

    im learning a lot from ur tutorials just curious how are u able to use "man" command on windows? Thanks

  • @VaibhavSharma-zj4gk
    @VaibhavSharma-zj4gk 17 днів тому

    Please in one of the videos, add checks to this code which were skipped. That would be good for learning.

    • @nirlichtman
      @nirlichtman  17 днів тому

      If I remember correctly, in my Windows Clipboard video I have added checks to demonstrate that. Also I have a video dedicated to error handling which is called something like "the importance of error handling in C"

  • @TheWinnieston
    @TheWinnieston Рік тому

    Thanks so much! Time to port this to 8080 assembly and put it on my retro computers! And then I can add any feature I want!
    *EDIT*
    I already added a simple command parser so you can insert, delete, edit lines and type out the file from any line number. ED here I come!

  • @mrx2586
    @mrx2586 Рік тому

    How did you split the terminal into both a text editor and a CLI within the same tab?
    and how are you switching between them?

    • @nirlichtman
      @nirlichtman  Рік тому

      I am using the window splitting feature of Vim which is very powerful, for more information check out my video about window splitting on my playlist "Vim Tips"

  • @AggamRahamim-fs2zm
    @AggamRahamim-fs2zm Рік тому

    is this windows + WSL? terminal looks like that
    how'd you get a tiling wm?

    • @nirlichtman
      @nirlichtman  Рік тому +1

      Yes, more info on welcome link on the channel description :)

    • @AggamRahamim-fs2zm
      @AggamRahamim-fs2zm Рік тому

      @@nirlichtman אגב האנגלית שלך מעולה, בדכ לא שומעים ישראלים עם כזה מבטא

    • @nirlichtman
      @nirlichtman  Рік тому

      @@AggamRahamim-fs2zmתודה! אני במקור מארצות הברית :)

    • @AggamRahamim-fs2zm
      @AggamRahamim-fs2zm Рік тому

      אה אוקי חחח הגיוני@@nirlichtman

  • @therealnotanerd
    @therealnotanerd Рік тому

    It may look good, but your editor has no syntax highlighting. Just kidding 🙂. It was awesome. The last time I developed in c was a few decades ago and it is nice to see these "basic" videos. Maybe I will start developing in C again for fun. And your channel will be a valuable resource. Thanks.

  • @liquidmobius
    @liquidmobius Рік тому +1

    I like your style, straight to the manpages. A real pro

  • @Tordek
    @Tordek Рік тому

    I understand this is a toy so the lack of error checking and such is fine, however one bad practice you really should cure yourself of is the preventative initialization of variables.
    When you ask for the line number, you do:
    int line = 0;
    scanf("%d", &line);
    Initializing line is unnecessary - it will be immediately overwritten - but it's a bad practice because by initializing it to "some" value you prevent the compiler from letting you know about any uninitialized accesses. It's preferrable to leave the variable uninitialized.
    Similarly with initializing the buffer: If I'd forgotten about null-termination, I'd much rather see data changing on every run (hinting at uninitialized access) than stuff appearing to run correctly.
    Also, a small detail: main _must_ return int. Returning void is an error.

    • @nirlichtman
      @nirlichtman  Рік тому +1

      Thanks for the feedback, those are good points 👍
      About the last point, main can actually also return "void" since C99 according to the C standard (in which case the exit code of the program will be undefined): devdocs.io/c/language/main_function

    • @Tordek
      @Tordek Рік тому +1

      @@nirlichtman Good to see some evolution in the language match usage.
      Nice video! Your channel looks fun.

  • @tickerboi_
    @tickerboi_ Рік тому

    אין עליך אח, מטורף!

    • @nirlichtman
      @nirlichtman  Рік тому

      תודה!

    • @tickerboi_
      @tickerboi_ Рік тому

      @@nirlichtman אין אני יזהה ישראלי ממרחקים 👀

    • @nirlichtman
      @nirlichtman  Рік тому

      @@tickerboi_ 😂

  • @antontheyeeter
    @antontheyeeter Рік тому

    why was main void?

  • @BlueBerryXD
    @BlueBerryXD 9 місяців тому

    I'm going crazy, or is this man running a windows vm that is running ubuntu? Vm inspection?

    • @nirlichtman
      @nirlichtman  9 місяців тому

      Windows 10 with WSL

    • @BlueBerryXD
      @BlueBerryXD 8 місяців тому

      @@nirlichtman But it looks like you are running windows terminal inside of dwm? Or is it just for the lols?

    • @nirlichtman
      @nirlichtman  8 місяців тому

      @@BlueBerryXD in this video I used a port of dwm for Windows called dwm-win32, since then I have stopped using dwm-win32 and started using a new twm I am working on called LightWM (due to many bugs in dwm-win32)

  • @TecnocraciaLTDA
    @TecnocraciaLTDA Рік тому +3

    lol, you just made a very basic version of ed

  • @ryuen-vn8em
    @ryuen-vn8em Рік тому +3

    Hi,I occasionally figured out that you can press Caps lock + k at the name of any function in your code and the man page of this function will be opened ,Maybe it will be useful for somebody

    • @cookedpotato
      @cookedpotato Рік тому +2

      With lsp extensions on nvim you can even do a hover like that of vscode.
      Also you can use the :Man to open a man page in split screen in vim or nvim , incase anyone wated to know too

  • @yashwanth8269
    @yashwanth8269 Рік тому

    link for github repo?

  • @Cool-Linux-Penguin
    @Cool-Linux-Penguin 6 місяців тому +1

    Reminder that you should use this channel to get your self started not to just copy him and keep on copying him.

  • @jazzyBit
    @jazzyBit Рік тому

    great! it's like ed

  • @arnabbanik6403
    @arnabbanik6403 Рік тому +1

    wow nice

  • @king1king2king3
    @king1king2king3 10 місяців тому

    Your videos are perfect but there's one exception the code editor that you use frustrates me and doesn't encourage me to continue the video. I think everything will be fine if you use a modern code editor.

    • @nirlichtman
      @nirlichtman  10 місяців тому +2

      Thanks! Reason I use Vim is that it is my favorite code editor, coming to it after using IDEs, I decided 4 years ago to learn it properly and started really liking it and switched to using it as my main editor. Except my videos which are specific about Vim (which are mostly my early content), it should be easy to follow using other editors since the focus of these videos is about the programming.

    • @jcen_
      @jcen_ 9 місяців тому

      ​@@nirlichtmanVim is awesome, I switched from vscode to neovim about half a year ago and I'm never going back unless I end up working with something like java/c# which from my experience pretty much require an IDE. Other than that I've been doing some Go and C recently and neovim works great with them. And don't even get me started on the infinite customization possibilities.

  • @furiousmilk6559
    @furiousmilk6559 9 місяців тому

    you sound like mark zuc

  • @prebenskill
    @prebenskill Рік тому

    Take my sub!

  • @arupde6320
    @arupde6320 Рік тому

    be regular .

  • @exvimmer
    @exvimmer Рік тому

    Noice

  • @ElPikacupacabra
    @ElPikacupacabra Рік тому

    `void main` .... : |

  • @broggl
    @broggl Рік тому

    using vim to write a text editor lmao

  • @EinSatzMitX
    @EinSatzMitX 5 місяців тому +1

    Am i seeing this right? Youre on linux ( atleast using dwm) but youre also in a Windows terminal which is running wsl