将vim中的shift-tab映射到Vim中的inverse选项卡

new*_*ser 43 vim

我已经做了一些搜索,并在vim中发现了大量有关绑定键的信息,但我无法确定如何映射shift-tab.或者我需要将它映射到哪个命令以使其"向后翻转".

这就是我现在所拥有的:

map <S-tab> <S-,><S-,>
Run Code Online (Sandbox Code Playgroud)

可能相关的信息:我正在使用2.22.3终端运行Debian.与VIM - Vi IMproved 7.1

amp*_*ine 93

Vim已经有插入模式的内置键命令,可以左移或右移当前行&shiftwidth.它们是(在插入模式下):

Ctrl-t :右移(助记符"标签")

Ctrl-d :向左移动(助记符"de-tab")

如果您仍想使用shift-tab,则执行以下操作:

" for command mode
nnoremap <S-Tab> <<
" for insert mode
inoremap <S-Tab> <C-d>
Run Code Online (Sandbox Code Playgroud)

  • 奇迹般有效.非常感谢你的帮助.这将真正提高我的效率.这真的是我的一天.再次感谢.:) (3认同)
  • 另外值得一提的是,这可以与Ctrl和其他控制键结合使用,如`<SC-Tab>` (2认同)

Eri*_*ski 11

调试为什么shift-tab在 vim 中没有在 Vim 中执行反向选项卡

如果您将代码inoremap <S-Tab> <C-d>放入您的代码.vimrc并且 vim 在插入模式下仍然没有响应,那么这意味着您的 Shift-tab 在键盘和 vim 之间危险的 4 部分旅程中被拦截、吞噬和忽略。你需要弄清楚你在哪里Shift-Tab默默地成为孤儿。

键盘和vim之间Shift+Tab的四阶段之旅

键盘 -> 操作系统

击键旅程的第一步是操作系统拦截所有键并停止其中一些键以执行操作系统的行为。例如Alt+Tab,这通常意味着“将当前窗口的焦点更改为下一个”。如果你发送Alt+Tab到 vim,vim 将不会响应,因为操作系统吞噬了它。你必须在你的操作系统上找到这个键映射区域。Windows、Mac 和 Linux 都不同,它们有不同的程序来管理哪些密钥被拦截,哪些密钥传递给应用程序。找到此区域并确保您Shift+tab已设置为直通到您使用的终端。

操作系统 -> 终端应用程序

第 2 步假设操作系统允许您Shift+Tab通过具有焦点的终端应用程序。您的终端应用程序应该在设置 -> 快捷方式或设置 -> 键盘映射下有一个配置菜单选项(大多数都不止一个,它们相互争斗)。有数百个终端应用程序,每个应用程序都有不同的意识形态,用于捕获和吞噬哪些击键并执行应用程序本机的某些操作,或者传递到外壳。找到该区域并确保您Shift+tab被允许通过并且正在通过。

终端应用程序 -> 你的 Shell

第 3 步假设您的终端应用程序允许Shift+Tab通过 shell。有一个区域定义了拦截哪些键组合以在 shell 上执行操作,这些操作会传递到前面的应用程序。对我来说,这inputrc只是 mac 和 Windows 有不同的领域。你必须找到这个文件并清除任何可能吞噬你的东西Shift+Tab并删除它,或者添加一个说通过的规则。

外壳-> vim

现在我们处于 Vim 级别,在那里.vimrc可以听到、捕获和/或重新广播Shift+Tab命令链中的下一步,并在执行此操作时执行您想做的任何操作。Vim 有一个map关键字来控制它。

如果我们谈论浏览器或网页,甚至还有第 5 步,它们具有允许客户端代码重新映射键的解释器引擎。但那是另一个帖子。

调试链指令以隔离您Shift+Tab的孤立位置:

  1. 确保您的操作系统没有吞噬您的 Shift+tab 并没有执行任何操作。尝试不同的应用程序,如 Eclipse、浏览器或记事本,看看 Shift+Tab 是否执行任何操作。如果是这样,那么操作系统可能会通过您Shift+tab未受影响的应用程序。

  2. 确保您的终端应用程序可以接收并正在接收Shift+Tab. 通过转到设置 -> 快捷方式并删除名称中包含 Shift 或 Tab 的任何键映射来验证这一点,然后创建一个新的键映射来拦截Shift+tab并执行一些简单的操作,例如new tab无关紧要。保存它,将焦点放在终端上并按下它,如果出现新选项卡,则终端可以听到并响应。

  3. 确保您的终端通过 Shift+Tab 传递到 shell。在设置 -> 键盘映射和设置 -> 快捷方式中擦除任何带有 Tab 或 Shift 气味的东西。默认操作(应该是)什么都不做并通过。

  4. 打开任何其他外壳程序一样nanoedemacs。如果其中任何一个在您按下 Shift+Tab 时执行任何操作,则很可能是终端通过 Shift+tab 传递到 vim。

  5. 此时我们知道 vi/vim 正在接收 Shift+Tab,但没有响应它。为了找出问题,吹走所有你的vim的配置文件,如.vimrc.profile下和任何.vim。问题甚至可能与 vim 或在/etc您运行 vanilla vim usingvim -u NONE并确保您正在运行 vim 下。Vim 的默认行为是直接通过。所以如果 Shift+Tab 没有做某事,那么 vi 就会被窃听。

  6. 使用空白的配置文件/目录卸载 vim 并重新安装。如果这不起作用,那么您的操作系统有问题。重新安装操作系统。如果这不起作用,请将计算机扔进垃圾桶。