Mac终端Vim仅在一行结束时使用退格

cfl*_*wis 65 macos vim terminal

无论是我的Mac 10.6终端还是我的,我似乎都有些奇怪.vimrc.

当我backspace在笔记本电脑的键盘上打字时,它只在光标位于行尾时才有效.试图从一行内删除什么都不做.MacVim正常运行.谷歌没有帮助,因为我甚至无法弄清楚这个行为的名称.

我的终端中的所有其他退格命令按预期工作,所以我倾向于它是特定于Vim的.

这是我的〜/ .vimrc映射的输出,我看不到任何会使终端中的Vim以这种方式运行的东西:

cflewis@coral-reef ~> egrep ".*map.*" ~/.vimrc 
"inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
let mapleader = ","
map Q gq
nmap <silent> <leader>s :set nolist!<CR>
" extended '%' mapping for if/then/else/end etc
map <S-Insert> <MiddleMouse>
map! <S-Insert> <MiddleMouse>
nmap <silent> <C-N> :silent noh<CR>
nmap <C-E> :b#<CR>
nmap <C-P> :NERDTreeToggle<CR>
nmap <leader>p :NERDTreeFind<CR>
nmap <leader>/ :call NERDComment(0, "invert")<cr>
vmap <leader>/ :call NERDComment(0, "invert")<cr>
nmap <leader>t :TlistToggle<CR>
nmap <leader>e :e **/
nmap <Leader>b :MiniBufExplorer<cr>
nmap <Leader>sh :ConqueSplit bash<cr>
nmap <Leader>r :ConqueSplit 
" map ,y to show the yankring
nmap <leader>y :YRShow<cr>
imap <silent> <Down> <C-o>gj
imap <silent> <Up> <C-o>gk
nmap <silent> <Down> gj
nmap <silent> <Up> gk
cmap w!! %!sudo tee > /dev/null %
inoremap jj <Esc>
nnoremap JJJJ <Nop>
Run Code Online (Sandbox Code Playgroud)

任何想法,将不胜感激.我试过翻转删除键发送^ H或^?,没有区别.

jam*_*san 156

最有可能的是,您遇到的"问题"是您无法删除当前插入模式会话期间未键入的任何内容.这是由于"退格"选项的默认设置.添加set backspace=indent,eol,start到您~/.vimrc的行为是您可能想要的.

  • 好先生,谢谢!我希望你有悠久而繁荣的生活. (14认同)
  • 为什么这个世界是默认的,为什么我之前没遇到过这个问题呢?我已经使用了很多VIM而且我之前在Mac上使用过VIM ......我现在才刚刚体验到这一点. (6认同)

Joh*_*han 15

这是我配置中唯一的显式退格映射.我不知道它是否会对你的问题有所帮助,但它可能值得一试?

" allow backspacing over everything in insert mode
set backspace=indent,eol,start
Run Code Online (Sandbox Code Playgroud)

  • 你知道了,这很有效,但我知道答案要点jamessan,因为他知道为什么.谢谢你的帮助! (2认同)