Vim:ファイルタイプ別マッピングを削除する方法は?

Vim:ファイルタイプ別マッピングを削除する方法は?

編集する:作業バージョン

私はマッピング[[しました]]私自身の機能:

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と「以降」スクリプトも機能しません。

ベストアンサー1

特定の定義(ファイルタイプ別、プロジェクト別...)は、常に現在のバッファでローカルに宣言する必要があります。これは<buffer>マッピングと短縮修飾子を介して行われます(使用するコマンド-b、メニューをエミュレートするには特定のプラグインが必要、プレフィックス付き変数b:、(sic)を使用して設定する必要がある設定: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>

PS:SOまたはSUは、このような質問に適しています。

おすすめ記事