Breakpoints and Usage
You probably know you can type `break function_name` (this places a break at the START of the function). Not so useful for concurrency when you might be switching in and out of functions all the time. More useful is `break filename.c:XX`, where XX is line number.
(gdb) break producerconsumer.c:28
Breakpoint 5 at 0x80002bf8: file ../../asst1/producerconsumer.c, line 28.
(gdb) break producerconsumer.c:56
Breakpoint 6 at 0x80002dfc: file ../../asst1/producerconsumer.c, line 56.
Also check out backtrace (bt) and list (l)
You should not be permitted to write production code if you do not have an journeyman licence in regular expressions or floating point math. —Rob Pike
. single character
\ escape
? optional character
* zero or more of previous
+ one ore more
| or on the word level
[] or for specific characters
^ not
\d digit
\s whitespace (tabs, carriage returns, null)
\b word boundary
\d{4} equiv \d\d\d\d
parenthesis and ? makes the stuff in parens optional
same for + and *
\w{n} n letter words
\w{n,k} n or k letter words
?*+ are "quantifiers"
This is my favourite text editor. It was created by programmers, for programmers.
This entire site that you are visiting has been created within Emacs. On top of that, it is really not far from Vanilla Emacs, that is how powerful this system is.

I have not even been using Emacs for a year yet, I began in November of 2024. As such I hardly feel the right to comment further on this framework, but I do know it shall be one of my homes til the day I die.
To manipulate code at the speed of thought.
It is the same reason that we learn to touch-type — to write at the speed of thought.
gg: go to the top of the fileG: go to the bottom of the fileb: go back a wordf: go forward a word$: teleport to the start of the line,0: teleport to the end.- replace everything within 2 parenthesis? no worries, it's natural: change in ( = "change in brackets" – duh!
Beyond being able to manipulate code on your own computer very quickly, the benefit of learning Vim is that you can manipulate code on any machine really quickly.
There are many shells, all of them do the same thing — they allow you to manipulate your filesystem.
I have experience with all of the major shells excluding Powershell1. ChatGPT has written this thousand word explainer, and I have made the people orange, the places purple and the softwares blue :).