diff --git a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/VimNavigation.kt b/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/VimNavigation.kt
index bd58c49..2ef3e6a 100644
--- a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/VimNavigation.kt
+++ b/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/VimNavigation.kt
@@ -38,20 +38,11 @@ object VimNavigation {
 				val originalBindings = (UIManager.get("PopupMenu.selectedWindowInputMapBindings") as Array<*>).also { originalPopupBindings = it }
 				val updatedBindings = mutableListOf(*originalBindings)
 				
-				updatedBindings.add(KeyStroke.getKeyStroke('h'))
-				updatedBindings.add("selectParent")
-				
-				updatedBindings.add(KeyStroke.getKeyStroke('j'))
-				updatedBindings.add("selectNext")
-				
-				updatedBindings.add(KeyStroke.getKeyStroke('k'))
-				updatedBindings.add("selectPrevious")
-				
-				updatedBindings.add(KeyStroke.getKeyStroke('l'))
-				updatedBindings.add("selectChild")
-				
-				updatedBindings.add(KeyStroke.getKeyStroke('q'))
-				updatedBindings.add("cancel")
+				addBinding(updatedBindings, "selectParent", setOf('h', 'p', 'x'))
+				addBinding(updatedBindings, "selectNext", setOf('j'))
+				addBinding(updatedBindings, "selectPrevious", setOf('k'))
+				addBinding(updatedBindings, "selectChild", setOf('l', 'o'))
+				addBinding(updatedBindings, "cancel", setOf('q'))
 				
 				UIManager.put("PopupMenu.selectedWindowInputMapBindings", updatedBindings.toTypedArray())
 				UISettings.getInstance().disableMnemonics = true
@@ -62,6 +53,13 @@ object VimNavigation {
 		}
 	}
 	
+	private fun addBinding(bindings: MutableList<Any?>, action: String, chars: Set<Char>) {
+		for (char in chars) {
+			bindings.add(KeyStroke.getKeyStroke(char))
+			bindings.add(action)
+		}
+	}
+	
 	private fun handleEvent(event: AWTEvent) {
 		if (event is FocusEvent && event.id == FocusEvent.FOCUS_GAINED && isEnabled.get()) {
 			when (val source = event.source) {
diff --git a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/components/VimListNavigation.kt b/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/components/VimListNavigation.kt
index ab3d63d..e428f15 100644
--- a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/components/VimListNavigation.kt
+++ b/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/components/VimListNavigation.kt
@@ -34,6 +34,14 @@ internal object VimListNavigation {
 		)
 	)
 	
+	private val POPUP_LIST_ROOT_NODE = ROOT_NODE + Parent(
+		mapOf(
+			KeyStroke.getKeyStroke('o') to IdeaAction("List-selectNextColumn"),
+			KeyStroke.getKeyStroke('p') to IdeaAction("List-selectPreviousColumn"),
+			KeyStroke.getKeyStroke('x') to IdeaAction("List-selectPreviousColumn"),
+		)
+	)
+	
 	fun install(component: JList<*>) {
 		if (component.getUserData(KEY) == null && component.javaClass.enclosingClass.let { it == null || !WizardPopup::class.java.isAssignableFrom(it) }) {
 			component.putUserData(KEY, VimNavigationDispatcher(component, ROOT_NODE))
@@ -47,7 +55,7 @@ internal object VimListNavigation {
 	}
 	
 	@Suppress("serial")
-	private class VimPopupListNavigationDispatcher(component: JList<*>, override val popup: WizardPopup) : VimNavigationDispatcher<JList<*>>(component, ROOT_NODE) {
+	private class VimPopupListNavigationDispatcher(component: JList<*>, override val popup: WizardPopup) : VimNavigationDispatcher<JList<*>>(component, POPUP_LIST_ROOT_NODE) {
 		init {
 			val speedSearch = SpeedSearchSupply.getSupply(component, true) as? SpeedSearch
 			if (speedSearch != null) {