在我的.vimrc
文件中,我有一个用于在行之前插入双斜杠(//
)的注释的键绑定
" the mappings below are for commenting blocks of text
:map <C-G> :s/^/\/\//<Esc><Esc>
:map <C-T> :s/\/\/// <Esc><Esc>
但是,当我编辑Python脚本时,我想将其更改为#
符号以供评论
我的Python.vim
文件夹中有一个.vim/ftdetect
文件,该文件也有tabwidths等设置。
如果可能的话,覆盖键绑定的代码是什么,所以我使用Python:
" the mappings below are for commenting blocks of text
:map <C-G> :s/^/#/<Esc><Esc>
:map <C-T> :s/#/ <Esc><Esc>
答案 0 :(得分:74)
您可以使用:map <buffer> ...
为活动缓冲区创建本地映射。这要求您的Vim使用+localmap
进行编译。
所以你可以做点什么
autocmd FileType python map <buffer> <C-G> ...
答案 1 :(得分:60)
ftdetect文件夹用于检测文件类型的脚本。 Filetype插件必须位于ftplugin文件夹中。文件类型必须以下列三种形式之一包含在文件名中:
.../ftplugin/<filetype>.vim
.../ftplugin/<filetype>_foo.vim
.../ftplugin/<filetype>/foo.vim
例如,您可以映射cpp文件类型的注释,将以下内容放在.../ftplugin/cpp_mine.vim
中:
:map <buffer> <C-G> :s/^/\/\//<Esc><Esc>
:map <buffer> <C-T> :s/\/\/// <Esc><Esc>
答案 2 :(得分:3)
顺便说一下......如果你的主要问题是关于评论...你应该查看“nerdcommenter”&#39;插件,它是在java / c / c ++ / python / dos_batch_file / etc等中注释/取消注释代码的最快方法。
答案 3 :(得分:2)
我更喜欢将配置放在单个文件中,所以我使用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两次。这就是为什么用autocmd! group_name
对绑定进行分组和清除的原因。您可以阅读more here。
由于默认情况下将映射应用于每个缓冲区,并且您只想更改与文件类型匹配的缓冲区的映射,因此<buffer>
修饰符就在其中,将映射限制为本地缓冲区。
答案 4 :(得分:0)
对于来到这里的人来说,这只是部分答案,他们很难让 任何 ftplugin脚本正常工作,但记住您的.vimrc(或源文件)应该包含
filetype plugin on
或
:filetype plugin on
用于在加载给定类型的文件时执行filetype-plugins。
答案 5 :(得分:0)
我建议使用freitass建议的.../ftplugin/<filetype>.vim
方法,但是在您的特定情况下,Vim Commentary将为您解决所有问题。