使用单个 `.vimrc` 按文件类型更改 Vim 行为(无需 ftplugin)

2023-12-07

如何使用单个命令更改 Vim 行为.vimrc以优雅的方式文件(没有 ftplugin)?

我的意思是...如果我对 C/C++ 文件运行许多推荐,例如:

set nu
set cin
set ai
set mouse=a
color elflord

以及对 AsciiDoc 文件的另一堆赞扬,例如:

set syntax=asciidoc
set nocin
set spell spl=en

更不用说Python、LaTeX等了……

已提出解决方案https://stackoverflow.com/a/159065/544721用于推杆autocommand在每个自定义命令之前。

有没有一种好的方法将它们分组autocommand不使用ftplugin- 为了保持一切单一.vimrc文件(更适合在许多机器上移动等)? 相当于if带括号的语句{} ?


您可以使用以下内容:

if has("autocmd")
    augroup LISP
        au!
        au BufReadPost *.cl :set lisp
        au BufReadPost *.cl :set showmatch
        au BufReadPost *.cl :set cpoptions-=m
        au BufReadPost *.cl :set autoindent
    augroup END
    augroup C
        au!
        autocmd BufNewFile,BufRead *.cpp set formatprg=c:\\AStyle\\bin\\AStyle.exe\ -A4Sm0pHUk3s4
        autocmd BufNewFile,BufRead *.c set formatprg=c:\\AStyle\\bin\\AStyle.exe\ -A4Sm0pHUk3s4
        autocmd BufNewFile,BufRead *.h set formatprg=c:\\AStyle\\bin\\AStyle.exe\ -A4Sm0pHUk3s4
        autocmd BufNewFile,BufRead *.cpp set tw=80
        autocmd BufNewFile,BufRead *.c set tw=80
        autocmd BufNewFile,BufRead *.h set tw=80
    augroup END
endif

这会根据打开的文件类型(在 autocmd 部分中指定)创建命令分组。您仍然需要在每个命令之前指定 autocmd 或 au,但它们很好地分组。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用单个 `.vimrc` 按文件类型更改 Vim 行为(无需 ftplugin) 的相关文章

  • 在 vim 中设置文本宽度而不覆盖特定于文件类型的内容

    我希望 vim 中默认的文本宽度为 80 但如果特定文件类型有自己的文本宽度 特别是 gitcommit 其中 tw 72 我希望 vim 尊重该宽度 在我的 vimrc 中 我有以下行 set tw 80 我也尝试过 setlocal t
  • gVim 和 gVim easy 有什么区别?

    这个问题是不言自明的 但经过一个小时的搜索 我还没有找到任何资源可以解释其中的差异 在对两者进行了一些研究后 发现 gVim 和 gVim easy 是相同的 gVim Easy 启动并锁定在插入模式 您输入的每个字符都像简单的记事本一样打
  • Vim 重复点(“.”)命令缓冲区?

    我真的很喜欢 YankRing 的行为 它让我可以访问我最近完成的几件事y固定或d已删除或c不假思索地被吊死了 然而 这样的补充功能对于 重复命令 最常见的是当我键入我真正想重复的内容时 然后按x清理一些东西 通常 可以通过视觉模式拉动我刚
  • Vi/vim - 从末尾行删除,包括最后一个字符

    我想做类似这个问题的事情VI VIM 删除 更改从右到左 https stackoverflow com q 9154212 301527即从行尾删除到该行中 的最后一个实例 这可以使用dT 将光标放置在该行的末尾 然而 这个命令和其他这样
  • vim 使用外部文件上的行号突出显示行

    我有两个文本文件 一个是我当前正在工作的文件 另一个包含行号列表 我想做的是突出显示第一个文件中行号与后一个文件匹配的行 E g File1 I like eggs I like meat I don t like eggplant My
  • VIM 分块插入

    我想在 VIM 中选定的文本块的开头插入一个哈希 Ruby 注释 我在可视模式下选择了线条 但如何对所有线条执行相同的操作 您有两个主要选择 在块视觉模式中选择 ctrl v 然后使用I沿着整个块的左侧插入相同的东西 相似地A追加 看分块运
  • 在 Vim 中注释/取消注释 ruby​​ 代码块的最优雅的方式是什么?

    在VIM中 当我需要注释掉一段Ruby代码时 我导航到要注释掉的行中的第一列 我按 CTRL v 进入视觉块模式 我向下导航直到我想要结束操作的地方 I type r
  • VIM语法折叠:禁用折叠多行注释

    我在 vim 7 3 中使用 语法 折叠方法 在 vimrc中 set foldmethod syntax 当我打开 Test cpp 时 包含 A function with a multi line comment This takes
  • Vim:设置 ctag 很困难。子目录中的源代码在项目根目录中看不到标签文件

    我今天试图在 Vim 上设置 丰富的 ctags 但很难让它正常工作 我在命令行上使用以下命令生成 ctags 文件 cd myproj ctags R 这会将标签文件放在 myproj 根目录中 然而 当我处理位于根目录中的源代码时 Vi
  • 在 Vim 中移至当前单词的末尾

    通常我使用ea将某些内容附加到单词上 但是 如果光标已经位于单词的最后位置 则此方法不起作用 ea将使光标移动到末尾next word 我很想知道是否有任何移动到末尾的热键current即使光标已经位于单词的最后位置 也会显示单词 Than
  • 如何从 Bash 命令行在后台 Vim 打开另一个文件?

    我正在从使用 Gvim 过渡到使用控制台 Vim 我在 Vim 中打开一个文件 然后暂停 Vim 在命令行上运行一些命令 然后想返回到 Vim Ctrl Z 在正常模式下 暂停 Vim 并返回到控制台 fg可用于将焦点返回到 Vim job
  • vim 中的 python 2 支持

    我正在尝试设置 YouCompleteMe 一个 vim 代码完成插件 当我运行 vim 时 它给我这个错误消息 YouCompleteMe unavailable 需要 python 2 x 我的 ubuntu 机器上安装了正确版本的 p
  • Vim 和 Mac:如何在不使用 pbcopy 的情况下复制到剪贴板

    我有一个同时支持剪贴板和 xterm clipboard 的 vim 版本 然而 y or y不要复制到系统剪贴板 我知道我可以使用 w pbcopy 甚至为其创建快捷方式 但我真的想要标准方式 我也看到了 fakeclip 但希望找到一个
  • Vim:使用制表符缩进,使用空格对齐

    我已经阅读了几个问题和答案 Vim 使用制表符缩进 使用空格与 C 源文件对齐 https stackoverflow com questions 8493705 vim use tabs for indentation spaces fo
  • 自定义 Vim HTML 语法

    我有一个脚本可以读取 HTML 文件并替换出现的 foo 具有 Perl 设置的值 像这样的东西 span class hi mom span 会在浏览器中产生类似这样的内容 span class classyclass Hello Wor
  • vimscript 调用与执行

    在 vimscript 中 有什么区别call and execute 在什么场景 用例中我应该使用其中一种而不是另一种 免责声明 我知道 vim 中提供了广泛的在线帮助 我正在寻找这个特定问题的简洁答案 call 调用函数 exec 将字
  • 使用vim,如何快速刷新正在处理的网页?

    我已经使用 VIM 几个星期了 同时处理各种网络语言 我真的很喜欢它 我发现必须点击或单击浏览器并刷新页面才能看到代码更改的效果 这很麻烦 更烦人的是 因为我使用的是 Virtual Box 而且我倾向于在主机系统上处理 PDF 文件 因此
  • 在vim中显示单个空格不可见字符

    我已经添加了set listchars tab trail extends nbsp 用于显示不可见的字符 它适用于制表符扩展 但不适用于 nbsp 我已阅读以下帮助 set listchars并尝试了那里给出的示例 但我仍然没有得到单空格
  • Vimscript:如何获取正在运行 Vim 的操作系统?

    我有一个 vim 插件 可以在不同的机器上运行 有时需要根据 Windows Linux Mac 执行不同的操作 测试操作系统最简单的方法是什么 我知道我可以解析 version 命令的输出 有没有更简单的东西可以揭示操作系统 来自谷歌 您
  • vimdiff 和 CVS 集成

    我一直希望能够以一种相当优雅的方式让 vimdiff 处理 CVS 控制的文件 我在互联网上发现了许多 有点黑客 脚本 最好的例子here http www vim org tips tip php tip id 390 基本上将您正在编辑

随机推荐