내 .vimrc에는 파일을 정리하는 autocmd가 있는데 명령에서 이를 어떻게 매핑합니까?
autocmd BufWritePre *.test1 silent! :%s/\s\+$//e | silent! :%s/\(\n\n\)\n\+/\1/ | silent! :%s#\($\n\s*\)\+\%$## | :%s/;$
nnoremap ;; silent! :%s/\s\+$//e | silent! :%s/\(\n\n\)\n\+/\1/ | silent! :%s#\($\n\s*\)\+\%$## | :%s/;$<CR>
매핑 실패 메시지
Error detected while processing ~/.vimrc:
line 966:
E486: Pattern not found: ;$<CR>
답변1
따라서 명령의 주요 문제는 명령을 사용하면 |
실제로 여러 명령으로 분할된다는 것입니다. 그 중 첫 번째 명령은 nnoremap
두 번째 명령부터 대체가 포함된 일련의 명령입니다. 런타임이 silent!
실행 중입니다. .vimrc
명령의 일부가 아닌 소스.
사용 \|
하거나 <bar>
이 문제를 해결해야 합니다.
두 번째 문제는 nnoremap
명령이 일반 모드에서 실행되어야 하므로 (replace) 명령을 silent!
실행 해야 한다는 것입니다 s
. 그러면 커서 아래의 문자가 ilent! ...
원하는 것이 아닌 로 대체됩니다. :
그 전에는 필요합니다. 추가 silent!
로 명령 모드로 들어가는 방법을 알 수 있습니다.
셋째, 마지막 명령이 제대로 구성되지 않았으므로 완료하려면 %s/;$<CR>
두 개의 추가 s가 필요합니다 . /
나는 당신의 의도가 ;
줄 끝의 모든 s를 제거하는 것이라고 가정하고 있으므로 %s/;$//
그것이 당신이 여기서 원하는 것이라고 가정합니다. (또한 당신이 거기를 건너뛴 것을 알았습니다 silent!
. 놓쳤을 수도 있습니다. 만약을 대비해 여기에 추가하고 있습니다.)
함께 넣어보세요:
nnoremap ;; :silent! :%s/\s\+$//e \| silent! :%s/\(\n\n\)\n\+/\1/ \| silent! :%s#\($\n\s*\)\+\%$## \| silent! :%s/;$//<CR>