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

时间:2011-01-22 04:48:20

标签: vim

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

这就是我现在所拥有的:

map <S-tab> <S-,><S-,>

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

4 个答案:

答案 0 :(得分:89)

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

Ctrl-t:向右移动(助记符“制表符”)

Ctrl-d:左移(助记符“de-tab”)

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

" for command mode
nnoremap <S-Tab> <<
" for insert mode
inoremap <S-Tab> <C-d>

答案 1 :(得分:2)

调试为什么Vim中的shift-tab不能在Vim中执行反选项卡

如果将代码inoremap <S-Tab> <C-d>放到.vimrc中,而vim在插入模式下仍然没有响应,则意味着Shift-tab在危险的4处被拦截,吞噬和忽略。在键盘和vim之间进行部分旅程。保持冷淡,找出您的Shift-Tab成为寂静孤儿的地方。

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

键盘->操作系统

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

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

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

终端应用程序->您的Shell

第3步假定您的终端应用程序允许Shift+Tab传递到外壳。有一个区域可以定义拦截哪些键组合以在shell上执行操作,然后再传递给位于正面的应用程序。对我来说,这是inputrc,但是mac和Windows具有不同的区域。您必须找到该文件并清除可能使Shift+Tab陷入僵局的所有内容并将其删除,或者添加一条规则说“ pass through”。

Shell-> vim

现在我们处于Vim级别,.vimrc可以收听,捕获和/或重新广播Shift+Tab到命令链中的下一步,并在此过程中做您想做的一切。 Vim具有map关键字来控制。

如果我们要谈论的是具有允许客户端代码重新映射键的解释器的浏览器或网页,那么旅程甚至还有第五步。但这是另一篇文章。

调试链说明,以隔离您的Shift+Tab被孤立的位置:

  1. 确保您的操作系统没有吞噬Shift +选项卡并且不执行任何操作。尝试使用其他应用程序(例如Eclipse,浏览器或记事本),然后查看Shift + Tab是否执行任何操作。如果是这样,则操作系统很可能会通过您的Shift+tab而不影响应用程序。

  2. 确保您的终端应用程序可以接收并且正在接收Shift+Tab。通过转到设置->快捷方式并清除名称中具有Shift或Tab的所有键盘映射进行验证,然后进行新的键盘映射以拦截Shift+tab并执行一些简单的操作,例如new tab 。保存它,将焦点放在终端上并按它,如果出现新的选项卡,则终端可以听到并做出响应。

  3. 确保您的终端正在通过Shift + Tab传递到外壳。清除“设置”->“键盘映射”和“设置”->“快捷方式”中“ Tab”或“ Shift”的所有异味。默认操作(应该是)不执行任何操作并通过。

  4. 打开任何其他外壳程序,例如nanoedemacs。如果在按Shift + Tab时其中任何一个执行任何操作,则终端很可能正在通过Shift + Tab进入vim。

  5. 在这一点上,我们知道vi / vim正在接收Shift + Tab,但没有响应。为了找出问题所在,请删除所有.vimrc.profile.vim下的vim配置文件。问题甚至可能出在vim或在/etc下,您使用vim -u NONE运行vanilla vim并确保您正在运行vim。 Vim的默认行为是直接通过。因此,如果Shift + Tab键没有执行任何操作,则vi处于错误状态。

  6. 使用空白配置文件/目录卸载vim,然后重新安装。如果这不起作用,则说明您的操作系统存在漏洞。重新安装操作系统。如果这样做不起作用,请将计算机扔进垃圾桶。

答案 2 :(得分:1)

要测试vim是否真的使您的shift + tab进入插入模式

ctrl + v然后按Tab,它应该创建一个制表符

ctrl + v然后Shift + Tab,它应该创建一个反Tab字符(显示为^ [[Z]

如果没有,则说明vim没有接收到shift + tab输入

在我的情况下,这是我的终端。

在终端窗口->设置->快捷方式

搜索shift + tab键并取消映射

答案 3 :(得分:-4)

以下内容可与Vim标签一起使用:

map <TAB> <ESC>gt<CR> 
map <S-TAB> <ESC>gT<CR>