Vim 对选定文本进行操作的脚本

Vim scripting with manipulation over selected text

我正在翻译一个应用程序 (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'

这对我有用:

将以下内容放入您的 .vimrc(重新启动 vim),然后在视觉上 select 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>