2013-07-04 4 views
0

vim에 단일 문자를 삽입하는 시스템이 있습니다. :nmap <Space> i_<Esc>r을 사용합니다. 그러나 웬일인지, 이것은 나의 탈출의 재 맵핑을 방해하고있는 것처럼 보인다. 나는 :imap kj <Esc>으로 탈출구를 다시 매핑했다.단일 문자 리매핑 삽입

kj을 누를 때마다 vim은 내 커서 바로 앞에 _을 삽입 한 다음 원하는만큼 바꿉니다. 나는 이런 것들이 왜 이런 식으로 상호 작용 하는지를 알 수 없다. 이 문제에 대해 누군가 의견을 개진 할 수 있습니까? 감사합니다.

여기

"general settings 
syntax on 
filetype plugin on 
set number 
set smd 
set ru 

"Leader 
let mapleader=',' 
nmap <Leader>w :w<Enter> 
nmap <leader>e :wq<Enter> 
nmap <leader>q :q!<Enter> 

"remappings 
nmap ; : 
imap kj <Esc> 
nmap <Space> i_<Esc>r 

"au comands 
au Filetype python source ~/.vim/scripts/python.vim 
au Filetype ruby source ~/.vim/scripts/ruby.vim 
au Filetype c source ~/.vim/scripts/c.vim 

답변

5

변경 모든 nmapnnoremap에 모든 imapinoremap을하고 문제가 지속되는지 확인 내 전체의 vimrc입니다.

뒤 공백이 없는지 확인하십시오.

:h 40.1을 전체적으로 읽으십시오.

chapter on "Strict mapping"에서 읽으십시오. Vimscript 어려운 방법을 배우십시오.

+0

모든 Vim 사용자는 해당 책을 읽어야합니다. Vimscript를 작성할 계획이 없더라도 Vim을 효과적으로 사용하는 방법에 대해 더 많이 배울 수 있습니다. Steve Losh가 말한 것처럼'-noremap' 변종을 항상 사용해야합니다. – d11wtq

+0

감사합니다. 그리고 그 책을 내 목록에 추가 할 것입니다. – Brandon

2

매핑에 후행 공백이있을 가능성이 있습니다. @glts와 같이 *map*noremap으로 변경하는 것 외에 텍스트를 삽입하는 것에서 행동을 바꿀 가능성이 높다. 커서를 한 위치 앞으로 이동 (공간의 기본 동작)하기 때문에 다른 이유로 @glts가 참조하는 링크에서 설명해야한다. 당신은 후행 공백을 강조하기 위해 다음 중 하나를 수행해야합니다

  1. set list listchars+=trail:-을이 특별히 후행 공백 대신에 -을 강조 표시합니다.
  2. 검색 실행 : / $<CR> (/, <Space>, $, <CR>).
  3. match (vimrc에 입력 할 수 있음)을 사용하여 검색을 실행하십시오. let g:trailing_match_nr=matchadd('Error', '\s\+$') : 하이라이트 그룹이 Error 인 후행 공백을 강조 표시합니다.

이러한 방법 중 하나로 강조 표시된 불필요한 후행 공백을 모두 제거해야합니다. 나는 개인적으로 첫 번째 것을 선호한다.