首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >您可以在Vim中使用特定于文件类型的键绑定吗?

您可以在Vim中使用特定于文件类型的键绑定吗?
EN

Stack Overflow用户
提问于 2011-05-26 11:22:48
回答 4查看 21.5K关注 0票数 81

在我的.vimrc文件中,我有一个用于注释的键绑定,它在行首插入双斜杠(//):

代码语言:javascript
复制
" the mappings below are for commenting blocks of text
:map <C-G> :s/^/\/\//<Esc><Esc>
:map <C-T> :s/\/\/// <Esc><Esc>

但是,当我编辑Python脚本时,我想将其更改为注释的#符号

我在我的.vim/ftdetect文件夹中有一个Python.vim文件,它也有标签宽度等设置。如果可能的话,什么是覆盖键绑定的代码,以便我可以使用Python:

代码语言:javascript
复制
" the mappings below are for commenting blocks of text
:map <C-G> :s/^/#/<Esc><Esc>
:map <C-T> :s/#/ <Esc><Esc>
EN

回答 4

Stack Overflow用户

发布于 2011-05-26 11:32:49

您可以使用:map <buffer> ...仅为活动缓冲区创建本地映射。这要求您的Vim是用+localmap编译的。

所以你可以像这样做

代码语言:javascript
复制
autocmd FileType python map <buffer> <C-G> ...
票数 86
EN

Stack Overflow用户

发布于 2019-01-09 18:28:08

我更喜欢将我的配置放在一个文件中,所以我使用autocmd方法。

代码语言:javascript
复制
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不会在你的vimrc源码时清除set autocmds,所以启动vim,在你的vimrc中修改一些东西,然后运行:so ~/.vimrc会定义两次autocmds。这就是使用autocmd! group_name对绑定进行分组和清除的原因。你可以阅读more here

由于映射在默认情况下应用于每个缓冲区,而您只想更改与文件类型匹配的缓冲区的映射,因此<buffer>修饰符在其中,它将映射限制到本地缓冲区。

票数 10
EN

Stack Overflow用户

发布于 2014-05-24 16:41:09

顺便说一句。如果你的主要问题是评论...你应该看看'nerdcommenter‘插件,这是在java/c/c++/python/dos_batch_file/etc中注释/取消注释代码的最快方法。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6133341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档