diff --git a/src/vty/command.c b/src/vty/command.c
index 5f7a42c..e5efad2 100644
--- a/src/vty/command.c
+++ b/src/vty/command.c
@@ -645,6 +645,8 @@
 	return 0;
 }
 
+static bool vty_command_is_common(struct cmd_element *cmd);
+
 /*
  * Dump all nodes and commands associated with a given node as XML to the VTY.
  */
@@ -655,6 +657,29 @@
 
 	vty_out(vty, "<vtydoc xmlns='urn:osmocom:xml:libosmocore:vty:doc:1.0'>%s", VTY_NEWLINE);
 
+	/* Only once, list all common node commands. Use the CONFIG node to find common node commands. */
+	vty_out(vty, "  <node id='_common_cmds_'>%s", VTY_NEWLINE);
+	vty_out(vty, "    <name>Common Commands</name>%s", VTY_NEWLINE);
+	vty_out(vty, "    <description>These commands are available on all VTY nodes. They are listed"
+		" here only once, to unclutter the VTY reference.</description>%s", VTY_NEWLINE);
+	for (i = 0; i < vector_active(cmdvec); ++i) {
+		struct cmd_node *cnode;
+		cnode = vector_slot(cmdvec, i);
+		if (!cnode)
+			continue;
+		if (cnode->node != CONFIG_NODE)
+			continue;
+
+		for (j = 0; j < vector_active(cnode->cmd_vector); ++j) {
+			struct cmd_element *elem;
+			elem = vector_slot(cnode->cmd_vector, j);
+			if (!vty_command_is_common(elem))
+				continue;
+			vty_dump_element(elem, vty);
+		}
+	}
+	vty_out(vty, "  </node>%s", VTY_NEWLINE);
+
 	for (i = 0; i < vector_active(cmdvec); ++i) {
 		struct cmd_node *cnode;
 		cnode = vector_slot(cmdvec, i);
@@ -682,6 +707,8 @@
 		for (j = 0; j < vector_active(cnode->cmd_vector); ++j) {
 			struct cmd_element *elem;
 			elem = vector_slot(cnode->cmd_vector, j);
+			if (vty_command_is_common(elem))
+				continue;
 			vty_dump_element(elem, vty);
 		}
 
@@ -3648,6 +3675,24 @@
 	}
 }
 
+/*! Return true if a node is installed by install_basic_node_commands(), so
+ * that we can avoid repeating them for each and every node during 'show
+ * running-config' */
+static bool vty_command_is_common(struct cmd_element *cmd)
+{
+	if (cmd == &config_help_cmd
+	    || cmd == &config_list_cmd
+	    || cmd == &config_write_terminal_cmd
+	    || cmd == &config_write_file_cmd
+	    || cmd == &config_write_memory_cmd
+	    || cmd == &config_write_cmd
+	    || cmd == &show_running_config_cmd
+	    || cmd == &config_exit_cmd
+	    || cmd == &config_end_cmd)
+		return true;
+	return false;
+}
+
 /**
  * Write the current running config to a given file
  * \param[in] vty the vty of the code
