VIM:Backspace在正常模式下删除,但在插入模式下不执行任何操作。

时间:2018-04-26 01:25:43

标签: vim

初步信息:

  • 问题出在终端Vim,而不是gVim
  • 我使用CMDER(基于conemu)作为我的终端模拟器
  • 我在Windows 10

详细说明:

当我处于插入模式时,我可以正常输入文字,但退格无效。在正常模式下,退格键删除文本。这与我今天早些时候的行为完全相反。我在线阅读了很多其他帖子,描述了Vim的非正统退格行为,但建议的配置设置(即bs = 2或bs = indent,eol,start)什么也没做。

更不寻常的是,gVim表现出正常情况"即:退格键在正常模式下将光标向左移动,并在插入模式下删除文本。

我想要的是退格键在插入模式下删除文本(就像大多数其他程序一样)并在正常模式下导航/禁用。我怎样才能重新获得这种行为?

下面是我的_vimrc的副本:(我会把它放在github上,但我的git现在搞砸了,我还没有修复它。)另外还有一个函数在_vimrc里面默认情况下。我不知道它做了什么但省略了它以节省空间。如果你想看看我是否可以在回复中发帖。

source $VIMRUNTIME/vimrc_example.vim

source $VIMRUNTIME/mswin.vim

behave mswin

" Pathogen - Plugin manager
execute pathogen#infect()

set nocompatible " Turns off Vi compatability gubbinz

" Color Theme
if !has("gui_running") " Allows some 256 color themes to work in Terminal
    set term=xterm
    set t_Co=256
    let &t_AB="\e[48;5;%dm"
    let &t_AF="\e[38;5;%dm"
    colorscheme gruvbox
endif

let g:gruvbox_dark_contrast = 'hard' " Both of these are just visual gruvbox tweaks

let g:gruvbox_light_contrast = 'hard'
set guifont=Consolas:h10:cANSI:qDRAFT " Changes font
set bs=indent,eol,start  " Makes backspace be normal
set filetype=ON     " Has vim check for filetype
set showcmd         " Displays incomplete commands
set ruler           " Shows position of cursor in document
set syntax=ON       " Turns on syntax highlighting
set number          " Show line numbers
set linebreak       " Break lines at word (requires Wrap lines)
set showbreak=+++   " Wrap-broken line prefix
set textwidth=100   " Line wrap (number of cols)
set showmatch       " Highlight matching brace

set hlsearch        " Highlight all search results
set smartcase       " Enable smart-case search
set incsearch       " Searches for strings incrementally

set autoindent      " Auto-indent new lines
set shiftwidth=4    " Number of auto-indent spaces
set smartindent     " Enable smart-indent
set smarttab        " Enable smart-tabs
set softtabstop=4   " Number of spaces per Tab
set undolevels=1000     " Number of undo levels
set backspace=indent,eol,start  " Backspace behaviour
set go=egrLTm           " Changes flags that specify how the GUI loads

1 个答案:

答案 0 :(得分:5)

最有可能的是,您的插入模式退格区映射为什么都不做(即<nop>)。通过键入:verbose imap <bs>来验证这一点。这将显示是否映射了退格键以及设置了地图的位置。

  

我想要的是退格键在插入模式下删除文本(就像大多数其他程序一样)并在正常模式下导航/禁用。我怎样才能重新获得这种行为?

你可以这样做:

iunmap <bs>
nnoremap <bs> <nop>

第一行在插入模式下取消映射<bs>,因此<bs>将恢复其默认功能。第二行在正常模式下映射<bs>无效。