diff --git a/src/main/java/de/prob2/jupyter/commands/CommandUtils.java b/src/main/java/de/prob2/jupyter/commands/CommandUtils.java
index ecc1e4694fb00e9e0bacebf689ef1bbdf54324e1..1d978e1f593b9ad96c48823e0e22c096f791a186 100644
--- a/src/main/java/de/prob2/jupyter/commands/CommandUtils.java
+++ b/src/main/java/de/prob2/jupyter/commands/CommandUtils.java
@@ -7,6 +7,7 @@ import java.util.HashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.NoSuchElementException;
 import java.util.Set;
 import java.util.function.Supplier;
 import java.util.regex.Matcher;
@@ -15,6 +16,8 @@ import java.util.stream.Collectors;
 
 import de.prob.animator.command.CompleteIdentifierCommand;
 import de.prob.animator.command.GetCurrentPreferencesCommand;
+import de.prob.animator.command.GetDefaultPreferencesCommand;
+import de.prob.animator.command.GetPreferenceCommand;
 import de.prob.animator.domainobjects.AbstractEvalResult;
 import de.prob.animator.domainobjects.ComputationNotCompletedResult;
 import de.prob.animator.domainobjects.EnumerationWarning;
@@ -23,6 +26,7 @@ import de.prob.animator.domainobjects.EvaluationErrorResult;
 import de.prob.animator.domainobjects.FormulaExpand;
 import de.prob.animator.domainobjects.IEvalElement;
 import de.prob.animator.domainobjects.IdentifierNotInitialised;
+import de.prob.animator.domainobjects.ProBPreference;
 import de.prob.animator.domainobjects.TypeCheckResult;
 import de.prob.animator.domainobjects.WDError;
 import de.prob.exception.ProBError;
@@ -366,6 +370,72 @@ public final class CommandUtils {
 		return (code, at) -> completeInBExpression(trace, code, at);
 	}
 	
+	public static @Nullable DisplayData inspectInPreferences(final @NotNull Trace trace, final @NotNull String code, final int at) {
+		final Matcher argSplitMatcher = ARG_SPLIT_PATTERN.matcher(code);
+		int prefNameStart = 0;
+		while (argSplitMatcher.find() && argSplitMatcher.end() <= at) {
+			prefNameStart = argSplitMatcher.end();
+		}
+		final Matcher prefNameMatcher = B_IDENTIFIER_PATTERN.matcher(code);
+		prefNameMatcher.region(prefNameStart, code.length());
+		if (prefNameMatcher.lookingAt()) {
+			final String name = prefNameMatcher.group();
+			final GetPreferenceCommand cmdCurrent = new GetPreferenceCommand(name);
+			final GetDefaultPreferencesCommand cmdDefaults = new GetDefaultPreferencesCommand();
+			trace.getStateSpace().execute(cmdCurrent, cmdDefaults);
+			final String currentValue = cmdCurrent.getValue();
+			final ProBPreference pref = cmdDefaults.getPreferences()
+				.stream()
+				.filter(p -> name.equals(p.name))
+				.findAny()
+				.orElseThrow(NoSuchElementException::new);
+			
+			final StringBuilder sbPlain = new StringBuilder();
+			final StringBuilder sbMarkdown = new StringBuilder();
+			sbPlain.append(name);
+			sbPlain.append(" = ");
+			sbPlain.append(currentValue);
+			sbPlain.append(" (");
+			sbPlain.append(pref.type);
+			sbPlain.append(")\n");
+			sbMarkdown.append(name);
+			sbMarkdown.append(" = `");
+			sbMarkdown.append(currentValue);
+			sbMarkdown.append("` (");
+			sbMarkdown.append(pref.type);
+			sbMarkdown.append(")  \n");
+			
+			sbPlain.append(pref.description);
+			sbPlain.append('\n');
+			sbMarkdown.append(pref.description);
+			sbMarkdown.append("  \n");
+			
+			sbPlain.append("Default value: ");
+			sbPlain.append(pref.defaultValue);
+			sbPlain.append('\n');
+			sbMarkdown.append("**Default value:** `");
+			sbMarkdown.append(pref.defaultValue);
+			sbMarkdown.append("`  \n");
+			
+			sbPlain.append("Category: ");
+			sbPlain.append(pref.category);
+			sbPlain.append('\n');
+			sbMarkdown.append("**Category:** `");
+			sbMarkdown.append(pref.category);
+			sbMarkdown.append("`  \n");
+			
+			final DisplayData result = new DisplayData(sbPlain.toString());
+			result.putMarkdown(sbMarkdown.toString());
+			return result;
+		} else {
+			return null;
+		}
+	}
+	
+	public static @NotNull Inspector preferencesInspector(final @NotNull Trace trace) {
+		return (code, at) -> inspectInPreferences(trace, code, at);
+	}
+	
 	public static @Nullable ReplacementOptions completeInPreferences(final @NotNull Trace trace, final @NotNull String code, final int at) {
 		final Matcher argSplitMatcher = ARG_SPLIT_PATTERN.matcher(code);
 		int prefNameStart = 0;
diff --git a/src/main/java/de/prob2/jupyter/commands/LoadCellCommand.java b/src/main/java/de/prob2/jupyter/commands/LoadCellCommand.java
index 0727356199b529763371d5842c4bcb2369776678..6c83b0a3466996683ae95297f6ae93af43b45f82 100644
--- a/src/main/java/de/prob2/jupyter/commands/LoadCellCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/LoadCellCommand.java
@@ -67,7 +67,7 @@ public final class LoadCellCommand implements Command {
 		final int newlinePos = argString.indexOf('\n');
 		if (newlinePos == -1 || at < newlinePos) {
 			// Cursor is on the first line, provide preference inspections.
-			return null; // TODO
+			return CommandUtils.inspectInPreferences(this.animationSelector.getCurrentTrace(), argString, at);
 		} else {
 			// Cursor is in the body, provide B inspections.
 			return CommandUtils.inspectInBExpression(this.animationSelector.getCurrentTrace(), argString, at);
diff --git a/src/main/java/de/prob2/jupyter/commands/LoadFileCommand.java b/src/main/java/de/prob2/jupyter/commands/LoadFileCommand.java
index 56143ae56ef98d3fe26c06db68f5a36b102fb9e8..6cdb234546d2f60051d17aa27be8f254e4c16589 100644
--- a/src/main/java/de/prob2/jupyter/commands/LoadFileCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/LoadFileCommand.java
@@ -108,6 +108,15 @@ public final class LoadFileCommand implements Command {
 		return new DisplayData("Loaded machine: " + this.animationSelector.getCurrentTrace().getStateSpace().getMainComponent());
 	}
 	
+	@Override
+	public @Nullable DisplayData inspect(final @NotNull String argString, final int at) {
+		return CommandUtils.inspectArgs(
+			argString, at,
+			(filename, at0) -> null,
+			CommandUtils.preferencesInspector(this.animationSelector.getCurrentTrace())
+		);
+	}
+	
 	@Override
 	public @Nullable ReplacementOptions complete(final @NotNull String argString, final int at) {
 		return CommandUtils.completeArgs(
diff --git a/src/main/java/de/prob2/jupyter/commands/PrefCommand.java b/src/main/java/de/prob2/jupyter/commands/PrefCommand.java
index 3d02abf31ab1bedb6947536bbc9e221989307c55..ff9eb3834837486e2afa45394e8bb0cc074fcda2 100644
--- a/src/main/java/de/prob2/jupyter/commands/PrefCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/PrefCommand.java
@@ -90,6 +90,11 @@ public final class PrefCommand implements Command {
 		return new DisplayData(sb.toString());
 	}
 	
+	@Override
+	public @Nullable DisplayData inspect(final @NotNull String argString, final int at) {
+		return CommandUtils.inspectInPreferences(this.animationSelector.getCurrentTrace(), argString, at);
+	}
+	
 	@Override
 	public @Nullable ReplacementOptions complete(final @NotNull String argString, final int at) {
 		return CommandUtils.completeInPreferences(this.animationSelector.getCurrentTrace(), argString, at);