首页 文章

Vim新手:将kj键映射到<Esc>无法在gnome终端中工作

提问于
浏览
2

我刚开始学习Vim . 我在gnome-terminal中使用Vim(在Ubuntu 14.04上) . 我想在我的vimrc文件中将kj键映射到Esc . 我在我的vimrc文件(〜/ .vimrc)中添加了以下两行:

inoremap kj <Esc>
cnoremap kj <Esc>

Question 1: 我找到了我的vimrc文件(甚至重新启动了终端),但是当我在插入模式下快速键入kj时,它只是输入这两个字母kj并且没有进入正常模式 . 难道我做错了什么?将Esc键映射到其他内容的正确方法是什么?

Question 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 回答

  • 1

    粘贴模式处于活动状态时,插入模式键盘图将无效,默认情况下您将其激活:

    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'
    
  • 3

    2)

    并没有完全回答这个问题,因为这会将CapsLock映射到所有应用程序,而不仅仅是Vim .

    xmodmap - <<EOD
    ! Set caps lock as escape, losing Caps Lock
    remove Lock = Caps_Lock
    keysym Caps_Lock = Escape
    EOD
    

    我将该脚本放在PATH的某个地方作为带有chmod x的capswap . 在您退出之前,不再有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,但实际上我很久以前删除了“交换”部分,就像在第一个清单中一样,并且只运行没有CapsLocking . 您的偏好可能会导致不同的选择 . 第一个脚本提供相当于两个Esc键 .

相关问题