
編集する:作業バージョン。
私はマッピング[[
しました]]
私自身の機能:
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は、このような質問に適しています。
答え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>