2012-09-02 2 views
2

내가 키 맵 다음 주 잖아 예상대로 작동하지 않습니다 : C 스타일로 라인을 코멘트VIM 키 맵은

nmap <F9> :s/^/\/\*! /<cr>:s/$/ !\*\//<cr>j 

을위한 것입니다. 내가 <F9>을 치면 잘 작동합니다. 그러나 번호 앞에 줄 수를 지정하려고하면 마지막 줄을 제외한 모든 줄에 닫는 대괄호 */이 누락됩니다. 내가 주석 비슷한 키 맵을 가지고

/*! foo1; 
/*! foo2; 
/*! foo3; !*/ 

: 것 같습니다

nmap <F10> :s/^\/\*! //e<cr>:s/ !\*\/$//e<cr>j 

와 상황이 유사하다 (폐쇄 브래킷을 제거하지 않습니다).

편집 :

Ha! I found solution.

답변

2

사실 vim 키맵은 일반적으로 lineranges를 지원하지 않습니다.

  1. 는 시각적 인 선택 범위를 설정 (라인)와로 매핑 변경 :하지만 거기에 몇 가지 해결 방법입니다 nmap <F9> :'<,'>s/^/\/\*! /<cr>:'<,'>s/$/ !\*\//<cr>j을 (당신이 nmap <F9> :'<,'>s/^/\/\*! /|'<,'>s/$/ !\*\//<cr>j에 "단축"할 수 있도록 한 줄에 더 전 명령을 실행할 수 있습니다
  2. 하지만이에 대한 플러그인을 사용하는 것이 좋습니다 것입니다 :. NERD commenter 정말 할을 ...
2

흠 ... 교묘이 첫 번째 대체 명령이 범위 :.,.+n로 변환되고 함께 할 수있는 뭔가,하지만 두 번째 줄은 최종 줄에서만 작동합니다. 왜 그런지 확신하지 못합니다. g하지만 단 하나의 대체로 변환하면 문제가 해결됩니다. 따라서, 하나의 호출에 붕괴하고 조금 정리하는이 작품 :

nnoremap <F9> :s!.*!/* & */!<CR>j

이 ( ! 대신 패턴 구분자로 /의 사용을 참고 당신은 (거의) 모든 문자와 :s를 사용할 수 있습니다.. /이 기본값 일 뿐이므로 패턴에 / 초를 많이 사용하는 경우 다른 것을 사용하고 일부 이스케이프는 저장하는 것이 좋습니다.