将erb wrap添加到surround.vim中

时间:2013-05-25 22:27:40

标签: ruby-on-rails vim erb

我正在尝试编辑我的surround.vim文件,以映射添加erb标记的快捷键。这是我所指的stackoverflow帖子:

VIM: insert empty ERB tags

我正在使用此VIM包https://github.com/spf13/spf13-vim,其中包含Surround.vim

stackoverflow帖子上的答案说有一个文件位于“〜/ .vim / after / ftplugin / erb.vim”

由于我使用的是捆绑包,因此我的文件结构不同,我通过挖掘并能够找到它 “〜/的.vim /束/ VIM-环绕/插件/ surround.vim”

该文件显示以下代码部分:(完整代码位于https://gist.github.com/lando2319/5650746的要点上)

  elseif exists("b:surround_".char2nr(newchar))
    let all    = s:process(b:surround_{char2nr(newchar)})
    let before = s:extractbefore(all)
    let after  =  s:extractafter(all)
  elseif exists("g:surround_".char2nr(newchar))
    let all    = s:process(g:surround_{char2nr(newchar)})
    let before = s:extractbefore(all)
    let after  =  s:extractafter(all)
  elseif newchar ==# "p"
    let before = "\n"
    let after  = "\n\n"
  elseif newchar ==# 's'
    let before = ' '
    let after  = ''
  elseif newchar ==# ':'
    let before = ':'
    let after = ''

如果我理解正确的话,我需要将下面的代码添加到我的surround.vim文件的某个地方,我相信在第1​​51行附近。

let b:surround_{char2nr('=')} = "<%= \r %>"
let b:surround_{char2nr('-')} = "<% \r %>"

到目前为止,我尝试将其添加到几个地方然后关闭并重新打开VIM中的文件,然后“cntl-s,=”到目前为止没有运气。有什么建议吗?

4 个答案:

答案 0 :(得分:3)

创建文件~/.vim/after/ftplugin/erb.vim并添加以下行:

let b:surround_{char2nr('=')} = "<%= \r %>"
let b:surround_{char2nr('-')} = "<% \r %>"

另一种方法是使用autocmd来激活环绕声映射。我更倾向于使用~/.vim/after/目录,而不是使用特定于文件类型的设置来混淆~/.vimrc

答案 1 :(得分:1)

不,你不应该将两行添加到插件的(surround.vim)源中。你应该把它们添加到你的vimrc中。

如果您想要周围的所有文件类型- and = <% \r %><%= \r %>,(例如yss-yss=)。

您只需添加

let g:surround_{char2nr('=')} = "<%= \r %>"
let g:surround_{char2nr('-')} = "<% \r %>"

到你的vimrc。请注意它们是全局的(带有g:前缀)变量。

如果您只是希望自定义的- and =适用于某种文件类型,则可以创建autocmd并设置缓冲区范围变量(使用b:,与问题中的两行相同)

我不熟悉红宝石世界。假设你要使用周围的文件类型是erb,你可以在你的vimrc中:

fun! AutoCmd_ERB()
        "do some other settings/mappings for your ERB, if you have
        "......
        "the customized surrounding :
        let b:surround_{char2nr('=')} = "<%= \r %>"
        let b:surround_{char2nr('-')} = "<% \r %>"
endf
autocmd FileType erb call AutoCmd_ERB()

答案 2 :(得分:0)

我想,欢迎来到Vim!

永远不要编辑插件源文件,总是错误的。

每当您需要自定义设置时,您的vimrc文件就会发生。输入:h vimrc-intro了解详情。

对于 surround.vim ,文档说明

  

以下内容在PHP文件中添加了“ - ”(ASCII 45)的替换。 (...)回车将被原始文本替换。

autocmd FileType php let b:surround_45 = "<?php \r ?>"

这意味着您需要将以下条目添加到vimrc文件中。出于您的目的,这意味着您需要添加行

autocmd FileType erb let b:surround_{char2nr('=')} = "<%= \r %>"
autocmd FileType erb let b:surround_{char2nr('-')} = "<% \r %>"

到你的vimrc文件。您的vimrc文件位于~/.vimrc(如果您使用的是Windows,则为$HOME\_vimrc。)

重启Vim,你就可以开始工作了。

答案 3 :(得分:0)

如果它对任何人都有帮助,对我来说,它改变了名称来自&#34; erb.vim&#34; to&#34; eruby.vim&#34;在〜/ .vim / after / ftplugin。