diff --git a/src/main/java/com/maddyhome/idea/vim/option/OptionsManager.kt b/src/main/java/com/maddyhome/idea/vim/option/OptionsManager.kt
index 109ed4b7e..107841374 100644
--- a/src/main/java/com/maddyhome/idea/vim/option/OptionsManager.kt
+++ b/src/main/java/com/maddyhome/idea/vim/option/OptionsManager.kt
@@ -34,13 +34,13 @@ import com.maddyhome.idea.vim.vimscript.services.IjVimOptionService
  */
 object OptionsManager {
   val ignorecase: ToggleOption
-    get() = (injector.optionService as IjVimOptionService).getRawOption(ignorecaseName) as ToggleOption
+    get() = (injector.optionService as IjVimOptionService).getOptionByNameOrAbbr(ignorecaseName) as ToggleOption
   val smartcase: ToggleOption
-    get() = (injector.optionService as IjVimOptionService).getRawOption(smartcaseName) as ToggleOption
+    get() = (injector.optionService as IjVimOptionService).getOptionByNameOrAbbr(smartcaseName) as ToggleOption
   val timeout: ToggleOption
-    get() = (injector.optionService as IjVimOptionService).getRawOption(timeoutName) as ToggleOption
+    get() = (injector.optionService as IjVimOptionService).getOptionByNameOrAbbr(timeoutName) as ToggleOption
   val timeoutlen: NumberOption
-    get() = (injector.optionService as IjVimOptionService).getRawOption(timeoutlenName) as NumberOption
+    get() = (injector.optionService as IjVimOptionService).getOptionByNameOrAbbr(timeoutlenName) as NumberOption
   val iskeyword: KeywordOption
     get() = KeywordOption(KeywordOptionHelper)
 }
diff --git a/src/test/java/org/jetbrains/plugins/ideavim/ex/implementation/commands/SetCommandTest.kt b/src/test/java/org/jetbrains/plugins/ideavim/ex/implementation/commands/SetCommandTest.kt
index b07589848..89eab42d4 100644
--- a/src/test/java/org/jetbrains/plugins/ideavim/ex/implementation/commands/SetCommandTest.kt
+++ b/src/test/java/org/jetbrains/plugins/ideavim/ex/implementation/commands/SetCommandTest.kt
@@ -134,4 +134,18 @@ class SetCommandTest : VimTestCase() {
     typeText(commandToKeys("set selection?"))
     assertExOutput("selection=exclusive \n")
   }
+
+  @TestWithoutNeovim(reason = SkipNeovimReason.OPTION)
+  fun `test show numbered value`() {
+    configureByText("\n")
+    typeText(commandToKeys("set so"))
+    assertExOutput("scrolloff=0         \n")
+  }
+
+  @TestWithoutNeovim(reason = SkipNeovimReason.OPTION)
+  fun `test show numbered value with questionmark`() {
+    configureByText("\n")
+    typeText(commandToKeys("set so?"))
+    assertExOutput("scrolloff=0         \n")
+  }
 }
diff --git a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimOptionServiceBase.kt b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimOptionServiceBase.kt
index e31b5a167..c0f572c22 100644
--- a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimOptionServiceBase.kt
+++ b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimOptionServiceBase.kt
@@ -367,7 +367,7 @@ abstract class VimOptionServiceBase : OptionService {
     options.get(optionName)!!.removeOptionChangeListener(listener)
   }
 
-  fun getRawOption(key: String): Option<out VimDataType>? {
+  override fun getOptionByNameOrAbbr(key: String): Option<out VimDataType>? {
     return options.get(key)
   }
 
diff --git a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt
index aae52136a..ab58339f1 100644
--- a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt
+++ b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt
@@ -25,6 +25,7 @@ import com.maddyhome.idea.vim.command.OperatorArguments
 import com.maddyhome.idea.vim.ex.ExException
 import com.maddyhome.idea.vim.ex.ranges.Ranges
 import com.maddyhome.idea.vim.helper.Msg
+import com.maddyhome.idea.vim.option.ToggleOption
 import com.maddyhome.idea.vim.options.OptionScope
 import com.maddyhome.idea.vim.vimscript.model.ExecutionResult
 import java.util.*
@@ -133,12 +134,11 @@ fun parseOptionLine(editor: VimEditor, args: String, scope: OptionScope, failOnB
         }
         // No operator so only the option name was given
         if (eq == -1) {
-          if (optionService.isToggleOption(token)) {
-            optionService.setOption(scope, token, token)
-          } else if (!optionService.getOptions().contains(token)) {
-            error = Msg.unkopt
-          } else {
-            toShow.add(Pair(token, token))
+          val option = optionService.getOptionByNameOrAbbr(token)
+          when (option) {
+            null -> error = Msg.unkopt
+            is ToggleOption -> optionService.setOption(scope, token, token)
+            else -> toShow.add(Pair(option.name, option.abbrev))
           }
         } else {
           // Make sure there is an option name
@@ -185,10 +185,10 @@ private fun showOptions(editor: VimEditor, nameAndToken: Collection<Pair<String,
   val optionService = injector.optionService
   val optionsToShow = mutableListOf<String>()
   var unknownOption: Pair<String, String>? = null
-  val optionsAndAbbrevs = optionService.getOptions() + optionService.getAbbrevs()
   for (pair in nameAndToken) {
-    if (optionsAndAbbrevs.contains(pair.first)) {
-      optionsToShow.add(pair.first)
+    val myOption = optionService.getOptionByNameOrAbbr(pair.first)
+    if (myOption != null) {
+      optionsToShow.add(myOption.name)
     } else {
       unknownOption = pair
       break
diff --git a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/services/OptionService.kt b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/services/OptionService.kt
index 1f94ab090..3581805d6 100644
--- a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/services/OptionService.kt
+++ b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/services/OptionService.kt
@@ -235,6 +235,11 @@ interface OptionService {
    */
   fun removeListener(optionName: String, listener: OptionChangeListener<VimDataType>)
 
+  /**
+   * Get the [Option] by its name or abbreviation
+   */
+  fun getOptionByNameOrAbbr(key: String): Option<out VimDataType>?
+
   /**
    * COMPATIBILITY-LAYER: Added this class
    * Please see: https://jb.gg/zo8n0r