在Vim中可以有文件类型特定的键绑定吗?

| 在我的
.vimrc
文件中,我有一个键绑定,用于注释,这些注释在一行之前插入双斜杠(
//
)。
\" the mappings below are for commenting blocks of text
:map <C-G> :s/^/\\/\\//<Esc><Esc>
:map <C-T> :s/\\/\\/// <Esc><Esc>
但是,当我编辑Python脚本时,我想将其更改为a3ѭ符号以进行注释 我的
.vim/ftdetect
文件夹中有一个
Python.vim
文件,该文件也具有制表符宽度等设置。 如果可能的话,什么代码可以覆盖键绑定,所以我可以使用Python:
\" the mappings below are for commenting blocks of text
:map <C-G> :s/^/#/<Esc><Esc>
:map <C-T> :s/#/ <Esc><Esc>
    
已邀请:
ftdetect文件夹用于文件类型检测的脚本。文件类型插件必须位于ftplugin文件夹中。文件类型必须以以下三种形式之一包含在文件名中:
.../ftplugin/<filetype>.vim
.../ftplugin/<filetype>_foo.vim
.../ftplugin/<filetype>/foo.vim
例如,您可以将cpp文件类型的注释映射到ѭ10中:
:map <buffer> <C-G> :s/^/\\/\\//<Esc><Esc>
:map <buffer> <C-T> :s/\\/\\/// <Esc><Esc>
    
您可以使用
:map <buffer> ...
仅为活动缓冲区进行本地映射。这要求您的Vim用
+localmap
编译。 所以你可以做类似的事情
autocmd FileType python map <buffer> <C-G> ...
    
我更喜欢将配置放在单个文件中,所以我使用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
当您获取
vimrc
时,Vim不会清除set autocmds,因此启动vim,更改
vimrc
中的内容并运行
:so ~/.vimrc
会定义autocmds两次。这就是将绑定分组并用ѭ19清除的原因。你可以在这里阅读更多。 由于默认情况下映射应用于每个缓冲区,并且您只想更改与文件类型匹配的缓冲区的映射,因此其中存在
<buffer>
修饰符,从而将映射限制为本地缓冲区。     
顺便说一句...如果您的主要问题是关于注释...,您应该签出\'nerdcommenter \'插件,这是在Java / C / C ++ / Python / Dos_batch_file / etc等中注释/取消注释代码的最快方法。     
对于来到这里的人,他们很难使任何ftplugin脚本正常工作,但这只是部分答案,但是请记住,您的.vimrc(或其来源的文件)应包含
filetype plugin on
要么
:filetype plugin on
用于在加载给定类型的文件时执行filetype-plugins。     

要回复问题请先登录注册