
Editar:Versión de trabajo.
He mapeado [[
y ]]
amis propias funciones:
nmap <silent> ]] :let &tabstop += 1 <CR> :echo 'tabstop =' &tabstop <CR>
nmap <silent> [[ :let &tabstop -= &tabstop > 1 ? 1 : 0 <CR> :echo 'tabstop =' &tabstop <CR>
Sin embargo, según :verbose map [[
estos son anulados por /usr/share/vim/vim72/ftplugin/php.vim
. ¿Cómo me deshago de las asignaciones de PHP y mantengo la mía propia? He intentado
autocmd FileType php unmap! [[
autocmd FileType php unmap! ]]
de acuerdo con latutorial, pero luego recibo mensajes de error al iniciar 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
Usandonnoremap
en lugar de nmap
no ayuda.
Poner las asignaciones en~/.vim/after/ftplugin/php.vim
tampoco funcionó. vim -V
muestra:
...
finished sourcing /usr/share/vim/vim72/ftplugin/php.vim
...
finished sourcing /home/user/.vim/after/ftplugin/php/php.vim
Entonces encuentra la supuesta anulación.
Combinar nnoremap
y el script "después" tampoco funciona.
Respuesta1
Las definiciones específicas (específicas del tipo de archivo, específicas del proyecto, ...) siempre se declararán locales en el búfer actual. Esto se logra con el <buffer>
calificador para asignaciones y abreviaturas (los comandos usan -b
y los menús necesitan un complemento específico para emular esto, las variables tienen el prefijo b:
y las configuraciones se deben establecer (sic) con :setlocal
).
Además, para declararlo (es decir, una definición específica de ft) local al búfer, puede usar el comando automático como parece estar haciendo, sin embargo, recomendaría usar ftplugins. Es mucho más fácil de mantener y ya se tienen en cuenta todas las reglas relativas a la anulación de las distintas definiciones (asignaciones, etc.).
" => 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>
PD: SO o SU habrían sido más adecuados para tal pregunta.
Respuesta2
Intentaría utilizar sugerencias para anular las comprobaciones de complementos predeterminadas descritasaquí. Para resumir: suelte el archivo del complemento de asignaciones al final de la ruta de ejecución (por ejemplo, ~/.vim/after/ftplugin/php.vim
) para anular las asignaciones globales.
Respuesta3
¿Intentaste usar nnoremap
en lugar de nmap
en tu.vimrc
nnoremap <silent> ]] :let &tabstop += 1 <CR> :echo 'tabstop =' &tabstop <CR>
nnoremap <silent> [[ :let &tabstop -= &tabstop > 1 ? 1 : 0 <CR> :echo 'tabstop =' &tabstop <CR>