Mac 终端 Vim 只会在行尾使用退格

Posted

技术标签:

【中文标题】Mac 终端 Vim 只会在行尾使用退格【英文标题】:Mac terminal Vim will only use backspace when at the end of a line 【发布时间】:2011-04-01 19:59:11 【问题描述】:

我的 Mac 10.6 终端或 .vimrc 似乎有些奇怪。

当我在笔记本电脑的键盘上键入 backspace 时,它仅在光标位于行尾时有效。试图从一行中删除什么都不做。 MacVim 运行正常。 Google 没有提供帮助,因为我什至不知道如何称呼这种行为。

我的终端中的所有其他退格命令都按预期工作,所以我倾向于它是特定于 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 或 ^?,没有区别。

【问题讨论】:

【参考方案1】:

您看到的“问题”很可能是您无法删除在当前插入模式会话期间未键入的任何内容。这是由于'backspace' 选项的默认设置。将set backspace=indent,eol,start 添加到您的~/.vimrc 是您可能想要的行为。

【讨论】:

啊哈,就是这样。魔法。谢谢! 好的先生,谢谢!我希望你有长寿和繁荣的生活。 为什么这是默认设置,为什么我以前没有遇到过这个问题?我用过很多VIM,之前在Mac上用过VIM……我现在才刚刚体验到。【参考方案2】:

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

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

【讨论】:

你知道了,这很好用,但我有 jamessan 的答案,因为他知道原因。感谢您的帮助!

以上是关于Mac 终端 Vim 只会在行尾使用退格的主要内容,如果未能解决你的问题,请参考以下文章

终端如何以编程方式在 shell 提示符下阻止退格,这样你就不能在它上面退格,例如$ 用于 bash 或 C:\blah\>

Ubuntu使用VI编辑时退格键不能正常使用问题解决

解决Ubuntu中vi命令的编辑模式下不能正常使用方向键和退格键的问题

解决vi编辑器不能使用方向键和退格键问题

字符串

解决Ubuntu14.04下vi编辑器不能使用方向键和退格键问题