Program in C?  (Without using IDE, etc)

...figuring out how to use avrdude
:
Much more effective, I think, to figure out how to do it with the tools I'm familiar with.

Except that the only familiar tool here seems to be the editor. As you're noticing, there's a bit more that the IDE does beyond just providing an editor, even though the editor is the most clearly visible part of the IDE. I use a different editor for editing my sketches quite frequently, and I still use the IDE for the compile/upload/small fix part of the cycle. This works reasonably well, given a little care. If your IDE takes a minute to load and speaks in the wrong language, that's sort of a separate issue...

Have you looked at: Redirecting and the parent pages?

(Alas, building code for microcontrollers seems to involve either quirky IDEs or complicated Makefiles...)

The IDE does approximately:

  1. retain settings (Board, Serial Port, Library locations)
  2. Edit
  3. Pre-process
  4. Compile libraries and core code.
  5. Compile sketch (using avr-gcc or avr-g++ as appropriate, and based on settings.)
  6. Link with libraries and core. (avr-gld)
  7. upload (using avrdude, according to settings.)
  8. convert to uploadable format (avr-objcopy)

All but step 3 have normal CLI equivalents, but the file locations are obscure and the options significant, so it's not like they'll be easy without doing a lot of additional setup (depending on your operating system, somewhat.)
You can turn on the "verbose" flags in preferences to see most of what is happening. Here's a summary (from a Mac):

[Build/link libraries]
/Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-gcc -c -g -Os -w -ffunction-sections -fdata-sections -mmcu=atmega168 -DF_CPU=16000000L -I/Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/cores/arduino /Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/cores/arduino/pins_arduino.c -o/Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/pins_arduino.c.o 

[ Lots more library builds ]

[preprocess and build sketch]
/Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega168 -DF_CPU=16000000L -I/Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/cores/arduino /Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/Blink_c.cpp -o/Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/Blink_c.cpp.o 

[link]
/Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-gcc -Os -Wl,--gc-sections -mmcu=atmega168 -o /Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/Blink_c.cpp.elf /Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/Blink_c.cpp.o /Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/core.a -L/Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet -lm 

[reformat for upload]
/Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 /Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/Blink_c.cpp.elf /Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/Blink_c.cpp.eep 

/Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-objcopy -O ihex -R .eeprom /Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/Blink_c.cpp.elf /Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/Blink_c.cpp.hex 

[upload]
/Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/tools/avr/bin/avrdude -C/Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/tools/avr/etc/avrdude.conf -v -v -v -v -pm168 -cstk500v1 -P/dev/tty.usbserial-A9005bXZ -b19200 -D -Uflash:w:/Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/Blink_c.cpp.hex:i