2011-09-21 4 views
1

내 .vimrc에서 텍스트 블록을 주석 처리/주석 해제하도록 일부 키 매핑/매크로를 설정하려고하지만 작동하도록 관리 할 수 ​​없습니다.검색 및 바꾸기 명령에서 변수 및 표현식 사용

let g:comment_id='~' 
autocmd BufRead,BufNewFile *.c,*.cpp,*.cxx,*.h,*.hpp,*.hxx,*.ipp let b:comment_open='//' 
autocmd BufRead,BufNewFile *.f90,*.F90 let b:comment_open='!' 

그리고 내가 그들을 사용의 differents 방법을 시도하지만 매번 실패 :

나는 몇 가지 변수를 정의

noremap <silent> ,cc :s/^/<C-R>=(b:comment_open.g:comment_id)/<CR>:nohlsearch<CR> 
noremap <silent> ,uc :s/<C-R>=(b:comment_open.g:comment_id)//<CR>:nohlsearch<CR> 

-> E15 : 잘못된 표현 : /, E15를 : 잘못된 표현식 : (b : comment_open.g : comment_id) //

noremap <silent> ,cc :s/^/<C-R>=(b:comment_open.g:comment_id)<CR>/<CR>:nohlsearch<CR> 
noremap <silent> ,uc :s/<C-R>=(b:comment_open.g:comment_id)<CR>//<CR>:nohlsearch<CR> 

-> E488 : 후행 문자

noremap <silent> ,cc :s/^/\=(b:comment_open.g:comment_id)/<CR>:nohlsearch<CR> 
noremap <silent> ,uc :s/\=(b:comment_open.g:comment_id)//<CR>:nohlsearch<CR> 

-> 참조 : 좋아, UC : E64 : \ = 아무것도 다음하지 E476 : 잘못된 명령

나는 사실 나는 어떻게 이해할 수 없다 'CR'와 \ = 작업과 말은 ... 당신의 도움에 대한

감사

답변

2

사용 :

nnoremap <silent> ,cc :s/^/\=b:comment_open.g:comment_id/<CR>:nohlsearch<CR> 
nnoremap <silent> ,uc :[email protected]\V<c-r>=escape(b:comment_open.g:comment_id,'\@')<cr>@@<cr>:nohlsearch<cr> 

참조 : :help sub-replace-expression

패턴이 verynomagic 켜 모든 특수 문자를 탈출하고, 심지어 당신은 구분 기호 및 백 슬래시 모두 탈출을 필요로하는 것이 필요하다.

+0

이 하나
noremap , 참조 : S/^/\ = B : comment_open.g : comment_id/ : nohlsearch
내가 E64를 얻을 UC 실패, CC에 대한 확인하지만 : \ = 아무것도, E476을 다음과 : 잘못된 명령을 사용할 때 :
noremap , UC : S/\ = (B : comment_open.g : comment_id) // : nohlsearch
는 주석 매크로 – janou195

+0

을 도와 주셔서 감사합니다, 오류가 발생했습니다. E33 : 아니요 prev ious 대체 정규 표현식 E476 : 유효하지 않은 명령 – janou195

+1

@ janou195 : 물결표는 특별한 의미가 있습니다 ... 수정 – Benoit

관련 문제