Making Minimalist Text Editor in C on Linux

Поделиться
HTML-код
  • Опубликовано: 20 авг 2024
  • Making a Minimalist Text Editor using C Library calls on Linux
    You can view the code I wrote in the video over here: github.com/nir...
  • НаукаНаука

Комментарии • 117

  • @emirbrkic6649
    @emirbrkic6649 8 месяцев назад +229

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

    • @enderman4
      @enderman4 8 месяцев назад +4

      Linux (wsl2)

    • @mhm6421
      @mhm6421 8 месяцев назад +11

      ​@@enderman4still is linux

    • @TheLukasBer
      @TheLukasBer 8 месяцев назад +5

      Check tsoding daily. Awesome channel with similar characteristics.

    • @phitc4242
      @phitc4242 8 месяцев назад

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

    • @MBrieger
      @MBrieger 8 месяцев назад +2

      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.

  • @alangamer50
    @alangamer50 8 месяцев назад +54

    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

  • @yuyuyuyuyuy484
    @yuyuyuyuyuy484 8 месяцев назад +17

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

    • @Cromwell224
      @Cromwell224 2 месяца назад

      Well hey, it's supposed to be minimalist right

  • @rogerwinright2290
    @rogerwinright2290 8 месяцев назад +29

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

  • @debajyatidey9468
    @debajyatidey9468 7 месяцев назад +5

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

  • @tech477
    @tech477 6 месяцев назад +1

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

  • @nyzss
    @nyzss 8 месяцев назад +11

    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.

  • @starc0w
    @starc0w 8 месяцев назад +5

    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  8 месяцев назад +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

  • @fuzzy-02
    @fuzzy-02 5 месяцев назад

    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!

  • @shauncheng3504
    @shauncheng3504 9 дней назад

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

  • @themannyzaur
    @themannyzaur 8 месяцев назад +3

    This is fantastic!
    Glad I found your channel

  • @snowpirate2652
    @snowpirate2652 8 месяцев назад +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!

  • @john.darksoul
    @john.darksoul 8 месяцев назад +3

    You make writing code in C seem enjoyable :D

  • @theoriginalneckbeard
    @theoriginalneckbeard 8 месяцев назад

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

  • @JotaDevelopment
    @JotaDevelopment 8 месяцев назад

    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!

  • @TheGrigerz
    @TheGrigerz 2 месяца назад

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

  • @rafaeloledo
    @rafaeloledo 8 месяцев назад

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

  • @wispysparks
    @wispysparks 8 месяцев назад +1

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

  • @hakonh3252
    @hakonh3252 8 месяцев назад +15

    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 8 месяцев назад

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

    • @Mike-gs7eo
      @Mike-gs7eo 8 месяцев назад

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

    • @hakonh3252
      @hakonh3252 8 месяцев назад +2

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

    • @user-ed1nw6vr8n
      @user-ed1nw6vr8n 8 месяцев назад

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

    • @johnshaw6702
      @johnshaw6702 8 месяцев назад +3

      ​@@user-ed1nw6vr8nThe 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.

  • @hermessantos181
    @hermessantos181 8 месяцев назад

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

  • @ullaskunder
    @ullaskunder 8 месяцев назад +7

    I wish I hadn't give up C

    • @SimGunther
      @SimGunther 8 месяцев назад +10

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

  • @dailydoseofshtposts6891
    @dailydoseofshtposts6891 8 месяцев назад +1

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

  • @cursedfox4942
    @cursedfox4942 8 месяцев назад

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

  • @animeshsarkar295
    @animeshsarkar295 8 месяцев назад

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

  • @Maagiicc
    @Maagiicc 8 месяцев назад +3

    This is gonna be the next vim 😳

    • @SimGunther
      @SimGunther 8 месяцев назад

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

  • @byronhambly
    @byronhambly 8 месяцев назад +8

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

    • @bity-bite
      @bity-bite 8 месяцев назад +2

      he can read more stuff if it's split horizontally

    • @slendi9623
      @slendi9623 8 месяцев назад

      @@bity-bite disagreed

    • @nirlichtman
      @nirlichtman  8 месяцев назад +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 8 месяцев назад

      @@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!

  • @bartholomewjoyce
    @bartholomewjoyce 8 месяцев назад +2

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

    • @nirlichtman
      @nirlichtman  8 месяцев назад

      Hmm, interesting idea for another video :)

  • @razvandedu5285
    @razvandedu5285 8 месяцев назад +2

    Dude is coding without autocomplete... crazy!

  • @Mike-gs7eo
    @Mike-gs7eo 8 месяцев назад +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 8 месяцев назад

      Why strcopy is dangerous?

    • @Mike-gs7eo
      @Mike-gs7eo 8 месяцев назад +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  8 месяцев назад

      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 8 месяцев назад

      @@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.

  • @liquidmobius
    @liquidmobius 8 месяцев назад +1

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

  • @foxmoss_
    @foxmoss_ 8 месяцев назад

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

  • @mrstanlez
    @mrstanlez 2 месяца назад +1

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

  • @sollybrown8217
    @sollybrown8217 8 месяцев назад

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

  • @aGuyFromFBI
    @aGuyFromFBI 8 месяцев назад

    Very good Video, straight to the point 👍.

  • @TheWinnieston
    @TheWinnieston 8 месяцев назад

    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!

  • @Tordek
    @Tordek 7 месяцев назад

    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  7 месяцев назад +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 7 месяцев назад +1

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

  • @littlecurrybread
    @littlecurrybread 8 месяцев назад

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

  • @miguelddn1
    @miguelddn1 8 месяцев назад +1

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

  • @siddharthbisht1287
    @siddharthbisht1287 8 месяцев назад

    thank you, this is really cool❤❤❤

  • @antonw8134
    @antonw8134 8 месяцев назад

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

  • @EinSatzMitX
    @EinSatzMitX 2 дня назад +1

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

  • @therealnotanerd
    @therealnotanerd 8 месяцев назад

    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.

  • @tickerboi_
    @tickerboi_ 7 месяцев назад

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

    • @nirlichtman
      @nirlichtman  7 месяцев назад

      תודה!

    • @tickerboi_
      @tickerboi_ 7 месяцев назад

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

    • @nirlichtman
      @nirlichtman  7 месяцев назад

      @@tickerboi_ 😂

  • @abiiranathan
    @abiiranathan 8 месяцев назад

    No nonsense coding! No fluff

  • @TecnocraciaLTDA
    @TecnocraciaLTDA 7 месяцев назад +3

    lol, you just made a very basic version of ed

  • @ryuen-vn8em
    @ryuen-vn8em 8 месяцев назад +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 8 месяцев назад +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

  • @MattG-lc6rm
    @MattG-lc6rm Месяц назад

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

  • @arnabbanik6403
    @arnabbanik6403 8 месяцев назад +1

    wow nice

  • @jazzyBSD
    @jazzyBSD 7 месяцев назад

    great! it's like ed

  • @mrx2586
    @mrx2586 8 месяцев назад

    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  8 месяцев назад

      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"

  • @prebenskill
    @prebenskill 8 месяцев назад

    Take my sub!

  • @Cool-Linux-Penguin
    @Cool-Linux-Penguin Месяц назад +1

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

  • @AggamRahamim-fs2zm
    @AggamRahamim-fs2zm 8 месяцев назад

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

    • @nirlichtman
      @nirlichtman  8 месяцев назад +1

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

    • @AggamRahamim-fs2zm
      @AggamRahamim-fs2zm 8 месяцев назад

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

    • @nirlichtman
      @nirlichtman  8 месяцев назад

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

    • @AggamRahamim-fs2zm
      @AggamRahamim-fs2zm 8 месяцев назад

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

  • @antontheyeeter
    @antontheyeeter 8 месяцев назад

    why was main void?

    • @andrewliu6592
      @andrewliu6592 8 месяцев назад

      because that's a thing that c allows

  • @yashwanth8269
    @yashwanth8269 8 месяцев назад

    link for github repo?

    • @nirlichtman
      @nirlichtman  8 месяцев назад

      Added to the description :)

  • @BlueBerryXD
    @BlueBerryXD 4 месяца назад

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

    • @nirlichtman
      @nirlichtman  4 месяца назад

      Windows 10 with WSL

    • @BlueBerryXD
      @BlueBerryXD 4 месяца назад

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

    • @nirlichtman
      @nirlichtman  4 месяца назад

      @@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)

  • @exvimmer
    @exvimmer 8 месяцев назад

    Noice

  • @king1king2king3
    @king1king2king3 5 месяцев назад

    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  5 месяцев назад +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_ 4 месяца назад

      ​@@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 4 месяца назад

    you sound like mark zuc

  • @arupde6320
    @arupde6320 8 месяцев назад

    be regular .

  • @broggl
    @broggl 8 месяцев назад

    using vim to write a text editor lmao

  • @ElPikacupacabra
    @ElPikacupacabra 8 месяцев назад

    `void main` .... : |

  • @EinSatzMitX
    @EinSatzMitX 2 дня назад

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