Vim 新手:将 kj 键映射到 <Esc> 在 gnome 终端中不起作用
Vim newbie: Mapping kj key to <Esc> not working in gnome terminal
我刚开始学习 Vim。我在 gnome 终端中使用 Vim(在 Ubuntu 14.04 上)。我想在我的 vimrc 文件中将 kj 键映射到 Esc 。我在我的 vimrc 文件 (~/.vimrc) 中添加了以下两行:
inoremap kj <Esc>
cnoremap kj <Esc>
问题 1:
我找到了我的 vimrc 文件(甚至重新启动了终端),但是当我在插入模式下快速键入 kj 时,它只会键入这两个字母 kj 而不会进入正常模式。难道我做错了什么?将 Esc 键映射到其他东西的正确方法是什么?
问题 2:
我应该如何编辑我的 vimrc 以将大写键映射到 Esc?
在Vim,
:echo $COLORTERM
显示'gnome-terminal'
作为参考,这是我完整的 vimrc 文件(没有注释):
set t_Co=256
colorscheme wombat256mod
syntax on
set hlsearch
set incsearch
set number
set autoindent
set ts=4
set ignorecase
set title
set scrolloff=5
" Map <ESC> key to kj
inoremap kj <Esc>
cnoremap kj <Esc>
set paste
set cursorline
2)
不完全回答问题,因为这将 CapsLock 映射到所有应用程序的转义,而不仅仅是 Vim。
xmodmap - <<EOD
! Set caps lock as escape, losing Caps Lock
remove Lock = Caps_Lock
keysym Caps_Lock = Escape
EOD
我将该脚本作为 capswap 和 chmod +x 放在 PATH 中的某处。在您注销之前,没有更多的 CapsLock 和 Esc 是它应该用于 vi 的位置,靠近左小指。
允许 Esc 锁定大写字母,(我发现,即使是 COBOL 程序员也很少(如果有的话)有必要)
xmodmap - <<EOD
! Set caps lock as escape, and escape as CapsLock
remove Lock = Caps_Lock
keysym Caps_Lock = Escape
keysym Escape = Caps_Lock
add Lock = Caps_Lock
EOD
顺便说一句,我习惯称它为 capswap,但实际上我很久以前就删除了 "swapping" 部分,就像在第一个列表中一样,只是 运行 没有 CapsLocking。您的喜好可能会导致不同的选择。第一个脚本相当于两个 Esc 键。
粘贴模式处于活动状态时,插入模式键盘映射将不起作用,默认情况下它处于活动状态:
set paste
您最好删除该行,以便粘贴模式处于非活动状态,并添加一种在需要时将其打开的简单方法。我用这个:
set pastetoggle=,p
粘贴模式默认关闭,我可以使用 ,p
轻松切换它
来自:help 'paste
:
When the 'paste' option is switched on (also when it was already on):
- mapping in Insert mode and Command-line mode is disabled
- abbreviations are disabled
- 'textwidth' is set to 0
- 'wrapmargin' is set to 0
- 'autoindent' is reset
- 'smartindent' is reset
- 'softtabstop' is set to 0
- 'revins' is reset
- 'ruler' is reset
- 'showmatch' is reset
- 'formatoptions' is used like it is empty
These options keep their value, but their effect is disabled:
- 'lisp'
- 'indentexpr'
- 'cindent'
我刚开始学习 Vim。我在 gnome 终端中使用 Vim(在 Ubuntu 14.04 上)。我想在我的 vimrc 文件中将 kj 键映射到 Esc 。我在我的 vimrc 文件 (~/.vimrc) 中添加了以下两行:
inoremap kj <Esc>
cnoremap kj <Esc>
问题 1: 我找到了我的 vimrc 文件(甚至重新启动了终端),但是当我在插入模式下快速键入 kj 时,它只会键入这两个字母 kj 而不会进入正常模式。难道我做错了什么?将 Esc 键映射到其他东西的正确方法是什么?
问题 2: 我应该如何编辑我的 vimrc 以将大写键映射到 Esc?
在Vim,
:echo $COLORTERM
显示'gnome-terminal'
作为参考,这是我完整的 vimrc 文件(没有注释):
set t_Co=256
colorscheme wombat256mod
syntax on
set hlsearch
set incsearch
set number
set autoindent
set ts=4
set ignorecase
set title
set scrolloff=5
" Map <ESC> key to kj
inoremap kj <Esc>
cnoremap kj <Esc>
set paste
set cursorline
2)
不完全回答问题,因为这将 CapsLock 映射到所有应用程序的转义,而不仅仅是 Vim。
xmodmap - <<EOD
! Set caps lock as escape, losing Caps Lock
remove Lock = Caps_Lock
keysym Caps_Lock = Escape
EOD
我将该脚本作为 capswap 和 chmod +x 放在 PATH 中的某处。在您注销之前,没有更多的 CapsLock 和 Esc 是它应该用于 vi 的位置,靠近左小指。
允许 Esc 锁定大写字母,(我发现,即使是 COBOL 程序员也很少(如果有的话)有必要)
xmodmap - <<EOD
! Set caps lock as escape, and escape as CapsLock
remove Lock = Caps_Lock
keysym Caps_Lock = Escape
keysym Escape = Caps_Lock
add Lock = Caps_Lock
EOD
顺便说一句,我习惯称它为 capswap,但实际上我很久以前就删除了 "swapping" 部分,就像在第一个列表中一样,只是 运行 没有 CapsLocking。您的喜好可能会导致不同的选择。第一个脚本相当于两个 Esc 键。
粘贴模式处于活动状态时,插入模式键盘映射将不起作用,默认情况下它处于活动状态:
set paste
您最好删除该行,以便粘贴模式处于非活动状态,并添加一种在需要时将其打开的简单方法。我用这个:
set pastetoggle=,p
粘贴模式默认关闭,我可以使用 ,p
来自:help 'paste
:
When the 'paste' option is switched on (also when it was already on):
- mapping in Insert mode and Command-line mode is disabled
- abbreviations are disabled
- 'textwidth' is set to 0
- 'wrapmargin' is set to 0
- 'autoindent' is reset
- 'smartindent' is reset
- 'softtabstop' is set to 0
- 'revins' is reset
- 'ruler' is reset
- 'showmatch' is reset
- 'formatoptions' is used like it is empty
These options keep their value, but their effect is disabled:
- 'lisp'
- 'indentexpr'
- 'cindent'