
편집하다:작업 버전.
내가 매핑 한 [[
것과]]
내 자신의 기능:
nmap <silent> ]] :let &tabstop += 1 <CR> :echo 'tabstop =' &tabstop <CR>
nmap <silent> [[ :let &tabstop -= &tabstop > 1 ? 1 : 0 <CR> :echo 'tabstop =' &tabstop <CR>
그러나 :verbose map [[
이에 따르면 /usr/share/vim/vim72/ftplugin/php.vim
. 나만의 매핑을 유지하면서 PHP 매핑을 제거하려면 어떻게 해야 합니까? 난 노력 했어
autocmd FileType php unmap! [[
autocmd FileType php unmap! ]]
에 따르면지도 시간, 하지만 Vim 시작 시 오류 메시지가 나타납니다.
Error detected while processing FileType Auto commands for "php":
E31: No such mapping
E31: No such mapping
Press ENTER or type command to continue
사용nnoremap
대신 nmap
도움이 되지 않습니다.
매핑 넣기~/.vim/after/ftplugin/php.vim
또한 작동하지 않았습니다. vim -V
쇼:
...
finished sourcing /usr/share/vim/vim72/ftplugin/php.vim
...
finished sourcing /home/user/.vim/after/ftplugin/php/php.vim
따라서 가정된 재정의를 찾습니다.
결합 nnoremap
및 "after" 스크립트도 작동하지 않습니다.
답변1
특정 정의(파일 형식별, 프로젝트별 등)는 항상 현재 버퍼에 대해 로컬로 선언되어야 합니다. 이는 <buffer>
매핑 및 약어에 대한 한정자를 사용하여 수행됩니다(명령은 을 사용 -b
하고 메뉴는 이를 에뮬레이트하기 위해 특정 플러그인이 필요하며 변수 앞에는 가 붙고 b:
설정은 으로 설정됩니다 :setlocal
).
게다가 버퍼에 로컬로 선언하려면(예: ft 특정 정의) 자동 명령을 사용할 수 있지만 대신 ftplugins를 사용하는 것이 좋습니다. 훨씬 더 유지 관리가 용이하며 다양한 정의(매핑 등)의 재정의에 관한 모든 규칙이 이미 고려되었습니다.
" => ftplugin/php/php_my_stuff.vim
" headers guards...
...
:nnoremap <silent> <buffer> ]] :setlocal ts+=1<cr>:set ts?<cr>
:nnoremap <silent> <buffer> [[ :setlocal ts-=1<cr>:set ts?<cr>
추신: SO 또는 SU가 그러한 질문에 더 적합했을 것입니다.
답변2
설명된 기본 플러그인 검사를 무시하기 위해 힌트를 사용하려고 합니다.여기. 요약하자면, ~/.vim/after/ftplugin/php.vim
전역 매핑을 재정의하려면 실행 경로 후반부(예: )에 매핑 플러그인 파일을 삭제하세요.
답변3
nnoremap
대신 nmap
에 사용하려고 했나요 ?.vimrc
nnoremap <silent> ]] :let &tabstop += 1 <CR> :echo 'tabstop =' &tabstop <CR>
nnoremap <silent> [[ :let &tabstop -= &tabstop > 1 ? 1 : 0 <CR> :echo 'tabstop =' &tabstop <CR>