Hoofdstuk 45Text Editor
Python-scripts en losse tekstnotities bewerken, intern in het .blend-bestand bewaard
De Text Editor is een eenvoudige, ingebouwde teksteditor met Python-syntaxiskleuring — voor scripts die je binnen Blender uitvoert, of gewoon voor notities die je wil bewaren bij het bestand. Elke tekst is een los datablock, net als een mesh of een materiaal.
RECCONCEPT00:00:00:00schooliumWaarvoor de Text Editor dient
Elke tekst die je hier typt of laadt, wordt een Text-datablock dat mét het .blend-bestand bewaard blijft (tenzij je 'm expliciet als extern bestand koppelt). Dat maakt de Text Editor de plek voor: Python-scripts die je binnen dit project wil hergebruiken, driver-expressies die te lang zijn voor het kleine invoerveld, of gewoon een to-do-lijst die je bij de scene wil bewaren.
Wat hij niet doet: hij is geen volwaardige IDE — geen autocomplete voor je eigen modules, geen debugger, geen linter. Voor serieus scriptwerk gebruiken veel mensen een externe editor (VS Code met de Blender Development-extensie) en laten ze Blender alleen het resultaat uitvoeren; deze editor blijft wel de snelste weg voor een kort script dat bij het bestand moet blijven horen.
RECBLENDER 5.1 · EDITOR-TEXT-EDITOR00:00:00:001920×1080De header van de Text Editor

- 1Text-datablock-selector
Kies of maak een tekst; 'New' en 'Open' staan hier ook.
- 2View · Text · Edit · Select · Format-menu's
Bestand-opties, opmaak, en tekstbewerking.
- 3Line Numbers / Word Wrap / Syntax Highlight-toggles
Weergave-opties die niets aan de inhoud veranderen.
- 4Run Script-knop
Voert de volledige tekst uit als Python; alleen zinvol bij geldige code.
- 5Register-toggle
Voert het script automatisch uit bij het openen van het bestand — met de nodige voorzichtigheid te gebruiken (zie hieronder).
Extern tegenover intern: waarom 'Save' soms niets lijkt te doen
Een tekst die je met New aanmaakt, is standaard puur intern: er is geen extern bestand om naar te schrijven, dus 'Save' vraagt de eerste keer om een pad (Save As). Open je daarentegen een extern .py-bestand, dan blijft de Text Editor gekoppeld aan dat pad; wijzig je het bestand buiten Blender, dan toont de header een waarschuwingsdriehoekje en moet je Reload gebruiken om de externe wijziging in te laden — Blender leest een gekoppeld bestand niet automatisch opnieuw.
RECBLENDER 5.1 · D45-TEXTEDITOR-MASTER00:00:00:00288×65Een script uitvoeren en fouten lezen
Run Script (Alt+P) voert de hele tekst uit in de Python-omgeving van deze Blender-sessie. Foutmeldingen verschijnen niet in de Text Editor zelf, maar in de systeemconsole (Window → Toggle System Console op Windows) of, korter, als een rode melding onderaan het Blender-venster die je met de muis kan overhoveren voor de volle tekst. Zonder de systeemconsole open te hebben, mis je bij een fout vaak de volledige traceback en dus de regel waar het precies misging.
RECBLENDER 5.1 · D45-TEXTEDITOR-MASTER00:00:00:00288×65Sneltoetsen — Text Editor
| Toets | Actie | Operator |
|---|---|---|
| Ctrl+WHEELUPMOUSE | Context Int Cycle | wm.context_cycle_int |
| Ctrl+WHEELDOWNMOUSE | Context Int Cycle | wm.context_cycle_int |
| Ctrl+NUMPAD_PLUS | Context Int Cycle | wm.context_cycle_int |
| Ctrl+NUMPAD_MINUS | Context Int Cycle | wm.context_cycle_int |
| Alt+N | New Text | text.new |
| Alt+O | Open Text | text.open |
| Alt+R | Reload | text.reload |
| Alt+S | Save | text.save |
| Ctrl+Alt+Shift+S | Save As | text.save_as |
| Alt+P | Run Script | text.run_script |
| Ctrl+X | Cut | text.cut |
| Ctrl+C | Copy | text.copy |
| Ctrl+V | Paste | text.paste |
| Shift+DEL | Cut | text.cut |
| Ctrl+INSERT | Copy | text.copy |
| Shift+INSERT | Paste | text.paste |
| Ctrl+D | Duplicate Line | text.duplicate_line |
| Ctrl+A | Select All | text.select_all |
| Ctrl+Shift+A | Select Line | text.select_line |
| LEFTMOUSE | Select Word | text.select_word |
| Ctrl+Shift+UP_ARROW | Move Lines | text.move_lines |
| Ctrl+Shift+DOWN_ARROW | Move Lines | text.move_lines |
| TAB | Indent or Autocomplete | text.indent_or_autocomplete |
| Shift+TAB | Unindent | text.unindent |
| Ctrl+SLASH | Toggle Comments | text.comment_toggle |
| HOME | Move Cursor | text.move |
| END | Move Cursor | text.move |
| Ctrl+E | Move Cursor | text.move |
| Ctrl+Shift+E | Move Cursor | text.move |
| LEFT_ARROW | Move Cursor | text.move |
| RIGHT_ARROW | Move Cursor | text.move |
| Ctrl+LEFT_ARROW | Move Cursor | text.move |
| Ctrl+RIGHT_ARROW | Move Cursor | text.move |
| UP_ARROW | Move Cursor | text.move |
| DOWN_ARROW | Move Cursor | text.move |
| PAGE_UP | Move Cursor | text.move |
| PAGE_DOWN | Move Cursor | text.move |
| Ctrl+HOME | Move Cursor | text.move |
| Ctrl+END | Move Cursor | text.move |
| Shift+HOME | Move Select | text.move_select |
| Shift+END | Move Select | text.move_select |
| Shift+LEFT_ARROW | Move Select | text.move_select |
| Shift+RIGHT_ARROW | Move Select | text.move_select |
| Ctrl+Shift+LEFT_ARROW | Move Select | text.move_select |
| Ctrl+Shift+RIGHT_ARROW | Move Select | text.move_select |
| Shift+UP_ARROW | Move Select | text.move_select |
| Shift+DOWN_ARROW | Move Select | text.move_select |
| Shift+PAGE_UP | Move Select | text.move_select |
| Shift+PAGE_DOWN | Move Select | text.move_select |
| Ctrl+Shift+HOME | Move Select | text.move_select |
| Ctrl+Shift+END | Move Select | text.move_select |
| DEL | Delete | text.delete |
| BACK_SPACE | Delete | text.delete |
| Shift+BACK_SPACE | Delete | text.delete |
| Ctrl+DEL | Delete | text.delete |
| Ctrl+BACK_SPACE | Delete | text.delete |
| INSERT | Toggle Overwrite | text.overwrite_toggle |
| LEFTMOUSE | Scrollbar | text.scroll_bar |
| MIDDLEMOUSE | Scrollbar | text.scroll_bar |
| MIDDLEMOUSE | Scroll | text.scroll |
| TRACKPADPAN | Scroll | text.scroll |
| LEFTMOUSE | Set Selection | text.selection_set |
| LEFTMOUSE | Set Cursor | text.cursor_set |
| Shift+LEFTMOUSE | Set Selection | text.selection_set |
| WHEELUPMOUSE | Scroll | text.scroll |
| WHEELDOWNMOUSE | Scroll | text.scroll |
| RET | Line Break | text.line_break |
| NUMPAD_ENTER | Line Break | text.line_break |
| Ctrl+Alt+Shift+Cmd+TEXTINPUT | Line Number | text.line_number |
| RIGHTMOUSE | Call Menu | wm.call_menu |
| Ctrl+Alt+Shift+Cmd+TEXTINPUT | Insert | text.insert |
| Toets | Actie | Operator |
|---|---|---|
| Ctrl+T | Context Toggle | wm.context_toggle |
| Ctrl+F | Find | text.start_find |
| Ctrl+J | Jump | text.jump |
| Ctrl+G | Find & Set Selection | text.find_set_selected |
| Ctrl+H | Replace | text.replace |
Veelvoorkomend: 'Register' en waarom je hem met opzet negeert
Een Register-script draait automatisch zodra iemand het .blend-bestand opent — handig voor een bestand dat bij het laden bv. een custom operator moet aanmelden, maar ook een reëel beveiligingsrisico: een gedeeld .blend-bestand kan zo willekeurige code laten draaien zonder dat je het doorhebt. Blender toont daarom bij het openen van een bestand met auto-run scripts een duidelijke waarschuwing, en de Preferences-optie 'Auto Run Python Scripts' staat bewust standaard aan noch onbeperkt vertrouwd — controleer bij een bestand van onbekende herkomst eerst de inhoud van elke geregistreerde tekst voor je hem vertrouwt.
RECBLENDER 5.1 · D45-TEXTEDITOR-MASTER00:00:00:00135×65Zelf proberen: een script schrijven en uitvoeren
Open start_text_editor.blend met een leeg Text-datablock.
- 1Typ een klein script: import bpy, gevolgd door bpy.ops.mesh.primitive_cube_add().
- 2Voer het uit met Alt+P en controleer dat er een kubus verschijnt in de 3D-viewport.
- 3Open de systeemconsole (Window-menu) om te zien of er iets naar de console geschreven wordt.
- 4Sla de tekst extern op via Text → Save As als een .py-bestand.