web-dev-qa-db-fra.com

Le terminal Mac Vim n'utilisera le retour arrière qu'à la fin d'une ligne

Je semble avoir quelque chose d'étrange avec mon terminal Mac 10.6 ou mon .vimrc.

Quand je tape backspace sur le clavier de mon ordinateur portable, cela ne fonctionne que lorsque le curseur est à la fin de la ligne. Essayer de supprimer de l'intérieur d'une ligne ne fait rien. MacVim fonctionne normalement. Google n'a pas aidé parce que je ne sais même pas comment appeler ce comportement.

Toutes les autres commandes de retour arrière de mon terminal fonctionnent comme prévu, donc je penche pour que ce soit spécifique à Vim.

Voici la sortie de mes mappages ~/.vimrc, je ne vois rien qui pourrait faire fonctionner Vim dans le terminal de cette façon:

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>

Toute idée serait appréciée. J'ai essayé de retourner la touche de suppression pour envoyer ^ H ou ^?, Sans aucune différence.

65
cflewis

Très probablement, le "problème" que vous voyez est que vous ne pouvez pas supprimer tout ce qui n'a pas été tapé pendant votre session en mode insertion actuelle. Cela est dû au paramètre par défaut de l'option 'backspace' . Ajouter set backspace=indent,eol,start à ton ~/.vimrc est le comportement que vous souhaitez probablement.

152
jamessan

C'est le seul mappage de retour arrière explicite que j'ai dans ma configuration. Je ne sais pas si cela vous aidera à résoudre votre problème, mais cela pourrait valoir la peine d'essayer?

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