Vim脚本与操作选定的文本

时间:2016-11-15 22:28:49

标签: vim macvim

我正在翻译应用程序(javascript),我想让它更快。我需要一种方法来选择文本,例如“Lorem Ipsum”,将其替换为“strings.lorem_ipsum”。然后我想转到我的翻译对象所在文件的末尾,并添加一个字段“lorem_ipsum:'Lorem Ipsum'”。 我的想法是创建一个功能:

1) Create a marker (ma)
2) Copy selected text to variable (str1)
3) let str2= join(split(tolower(str), " "), "_");
4) Replace str1 with {strings.str2}
5) Go to the translation object (/\s+en:\s+{)
6) Add line, and add str2: 'str1'
7) Jump back to the marker (`a)

有人可以解释如何以正确的方式进行操作,以便将其映射到特定的密钥吗?

输入:

<Text>Lorem Ipsum</Text>
...
strings = {
  en : {

输出:

<Text>{strings.lorem_ipsum}</Text>
...
strings = {
  en : {
    lorem_ipsum : 'Lorem Ipsum'

1 个答案:

答案 0 :(得分:1)

这对我有用:

将以下内容放入.vimrc(重启vim),然后直观地选择Lorem Ipsum,然后按l

function! Lorem()
    let str1 = getreg("@")
    let str2 = join(split(tolower(str1), " "), "_")
    call append(line('$'), "    " . str2 . " : '" . str1 . "'")
    return "{strings." . str2 . "}"
endfunction

vnoremap l s<C-R>=Lorem()<CR><ESC>