Mac终端的Vim只有在行末才能使用退格键。

74

我似乎在我的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>

如果您有任何想法,欢迎分享。我尝试了将删除键翻转,发送 ^H 或 ^?,但没有任何改变。

2个回答

192

很可能,你遇到的“问题”是你不能删除在当前插入模式会话期间未打印的任何内容。这是由于默认设置的'backspace'选项造成的。将set backspace=indent,eol,start添加到你的~/.vimrc文件中是你可能想要的行为。


1
啊哈,就是这样。神奇。谢谢! - cflewis
17
非常感谢你的夸奖!祝您长命百岁、事业蒸蒸日上。 - if __name__ is None
11
为什么这是默认设置,我以前从未遇到过这个问题?我经常使用VIM,并且以前在Mac上也使用VIM……直到现在才遇到这个问题。 - Timothy Zorn
1
一样的 - 我也觉得最近这个功能好像不起作用了,谢谢! - Mark Brown

19

这是我在配置文件中唯一明确的退格键映射。我不知道它是否对您的问题有帮助,但值得一试吗?

" allow backspacing over everything in insert mode
set backspace=indent,eol,start

3
你做得很好,但我将答案点给了jamessan,因为他知道原因。感谢你的帮助! - cflewis
有人知道如何在lua中实现这个吗? - Alex Totolici

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接