我想在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>)
答案 0 :(得分:1)
您可以继续浏览外部命令,因为您已经开始使用touch
了。因此,您可以使用sed
或awk
替换/追加到其他文件的行。使用Vim的system()
命令,您也可以传递 stdin 输入。例如,如果要从当前缓冲区中复制行,请使用getline()
抓取它们,并将它们作为List或String传递给system()
。
但是,我建议避免使用外部命令,并在Vim中执行文本编辑任务。为此,您只需要:execute 'split' other_file
,并使用Ex命令或:normal
进行编辑,就像交互式一样。请注意,有一些特殊的Ex命令(如:wincmd w
替换<C-w>w
正常模式命令)可以使其更具可读性。