¿Puede tener enlaces de teclas específicos del tipo de archivo en Vim?

79

En mi .vimrcarchivo, tengo un enlace de teclas para comentar que inserta barras dobles ( //) al comienzo de una línea:

" the mappings below are for commenting blocks of text
:map <C-G> :s/^/\/\//<Esc><Esc>
:map <C-T> :s/\/\/// <Esc><Esc>

Sin embargo, cuando estoy editando scripts de Python, quiero cambiar eso a un # signo para comentarios

Tengo un Python.vimarchivo en mi .vim/ftdetectcarpeta que también tiene configuraciones para anchos de pestañas, etc. ¿Cuál es el código para anular las combinaciones de teclas si es posible, para que tenga Python?

" the mappings below are for commenting blocks of text
:map <C-G> :s/^/#/<Esc><Esc>
:map <C-T> :s/#/ <Esc><Esc>
James
fuente

Respuestas:

64

La carpeta ftdetect es para scripts de detección de tipo de archivo. Los complementos de tipo de archivo deben estar dentro de la carpeta ftplugin. El tipo de archivo debe incluirse en el nombre del archivo en una de las tres formas siguientes:

  • .../ftplugin/<filetype>.vim
  • .../ftplugin/<filetype>_foo.vim
  • .../ftplugin/<filetype>/foo.vim

Por ejemplo, puede mapear comentarios para el tipo de archivo cpp poniendo lo siguiente dentro de .../ftplugin/cpp_mine.vim:

:map <buffer> <C-G> :s/^/\/\//<Esc><Esc>
:map <buffer> <C-T> :s/\/\/// <Esc><Esc>
freitass
fuente
6
Olvidaste la <buffer>parte.
Luc Hermitte
1
Su respuesta resuelve dos de mis problemas, asignaciones por tipo de archivo y cómo comentar la línea actual con una asignación. ¡Excelente!
rendon
84

Puede usar :map <buffer> ...para hacer un mapeo local solo para el búfer activo. Esto requiere que su Vim haya sido compilado +localmap.

Entonces puedes hacer algo como

autocmd FileType python map <buffer> <C-G> ...
Hammar
fuente
9

Prefiero tener mi configuración en un solo archivo, así que uso el enfoque autocmd.

augroup pscbindings
  autocmd! pscbindings
  autocmd Filetype purescript nmap <buffer> <silent> K :Ptype<CR>
  autocmd Filetype purescript nmap <buffer> <silent> <leader>pr :Prebuild!<CR>
augroup end

Vim no borra los autocmds establecidos cuando obtiene su vimrc, por lo que iniciar vim, cambiar algo en su vimrcy ejecutar :so ~/.vimrcdefiniría autocmds dos veces. Es por eso que las vinculaciones se agrupan y borran con autocmd! group_name. Puedes leer más aquí .

Dado que las asignaciones se aplican a cada búfer de forma predeterminada, y desea cambiarlas para búferes que coincidan solo con el tipo de archivo, el <buffer>modificador está ahí, limitando las asignaciones al búfer local.

alextes
fuente
4

Por cierto ... si su problema principal es comentar ... debería consultar el complemento 'nerdcommenter', es la forma más rápida de comentar / descomentar su código en java / c / c ++ / python / dos_batch_file / etc.

TIC Tac
fuente
1
He estado muy, muy feliz con YAATPP * github.com/tpope/vim-commentary * -> Yet Another Amazing Tim Pope Plugin
patrickdavey
0

Recomiendo el .../ftplugin/<filetype>.vimenfoque que sugiere freitass, pero en su caso específico, Vim Commentary resolverá todo esto por usted.

Finlay McAfee
fuente
-1

Esto es sólo una respuesta parcial a las personas que vienen aquí tienen dificultades para obtener cualquier guiones ftplugin de trabajo, pero recuerde que su .vimrc (o un archivo que las fuentes) deben contener

filetype plugin on

o

:filetype plugin on

para que se ejecuten complementos de tipo de archivo cuando se carga un archivo de un tipo determinado.

koyae
fuente
Acabo de notar algunos votos negativos. Feliz de editar o eliminar en consecuencia, pero primero necesito saber el motivo: /
koyae