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