vimscript - 从自定义命令编辑另一个文件

时间:2017-04-19 07:48:05

标签: vim

我想在this_file.py中调用自定义命令后创建,移动并附加到other_file.py。

例如,我想在另一个文件的一系列行中写几行文字。

我有什么方法可以进入:在这个函数的other_file.py中编辑模式?这将允许我四处移动,搜索并附加到other_file,就好像我在其中一样。

以下是我所处的位置:

我在this_file.py中,我打电话给:

:MyComm other_file:line_1/line_2/line_3

这会激活以下vimscript:

function MyFunc(param_string)

    let param_split = split(a:param_string,":")
    let file_name = param_split[0] . ".py"
    let lines = split(class_split[1],"/")

    call system("touch " . file_name)

    " Here is where I want to loop through the lines and use them in other_file.py

endfunction

:command -nargs=1 MyComm :call MyFunc(<f-args>)

1 个答案:

答案 0 :(得分:1)

替代A

您可以继续浏览外部命令,因为您已经开始使用touch了。因此,您可以使用sedawk替换/追加到其他文件的行。使用Vim的system()命令,您也可以传递 stdin 输入。例如,如果要从当前缓冲区中复制行,请使用getline()抓取它们,并将它们作为List或String传递给system()

替代B

但是,我建议避免使用外部命令,并在Vim中执行文本编辑任务。为此,您只需要:execute 'split' other_file,并使用Ex命令或:normal进行编辑,就像交互式一样。请注意,有一些特殊的Ex命令(如:wincmd w替换<C-w>w正常模式命令)可以使其更具可读性。