我正在使用最新的vim版本。
vim --version | head -1
VIM - Vi IMproved 8.1 (2018 May 18, compiled Aug 12 2019 17:28:55)
Run Code Online (Sandbox Code Playgroud)
使用vim编辑python文件。
vim embed.py
x = 3
print(x)
y =4
print(x+y)
Run Code Online (Sandbox Code Playgroud)
正常的执行方式embed.py是处于编辑状态。
:! python3 %
Run Code Online (Sandbox Code Playgroud)
我有一个新的主意,如何将所有行复制embed.py到tervim中由命令打开的上述窗口中?
ggyG不能工作。在vim窗口中移动光标,然后按ggyG。
在python3窗口中移动光标。
ctrl + v不能工作,<C-\><C-N>也不能工作。
现在是时候尝试使用gui方式,也不要粘贴任何内容。
如Tarun Lalwani所说:
步骤1:将行复制到系统剪贴板中
:%y+
Run Code Online (Sandbox Code Playgroud)
或与其他命令。
第2步:将光标移到运行python3的上部窗口中。
第三步:Ctrl + V + Shift
如何用热键绑定所有步骤?
状态1:
在我的.vimrc中编写以下内容。
function! CopyPasteBuffer()
normal gg"+yG
wincmd p
call feedkeys('^W"+')
endfunction
nnoremap <leader>p :call CopyPasteBuffer()<CR>
Run Code Online (Sandbox Code Playgroud)
状态2:
在我的.vimrc中编写以下内容。
function! CopyPasteBuffer()
normal gg"+yG
wincmd p
endfunction
nnoremap <leader>p :call CopyPasteBuffer()<CR>
Run Code Online (Sandbox Code Playgroud)
\p将光标移至上窗口,现在按下ctrl+v+sfift即可生效。

快完成了!这里仍然是一个问题。
将所有程序行粘贴到python交互式窗口中的最后一步(第3步)尚未自动添加到vimscript中,rkta CopyPasteBuffer()仅\p成功地用热键绑定了两个步骤。
请尝试使用bash代替zsh。几乎相同的结果,两个normal gg"+yG和normal gg"*yG,ctrl+v+shift或ctrl+w+ctrl+v或ctrl+v不能粘贴寄存器的内容*,如果它是normal gg"*yG在CopyPasteBuffer()(在我的bash验证)。
有一个名为term_sendkeys将密钥发送到终端缓冲区的内置函数。
这是一个使用以下命令将当前缓冲区中的所有行发送到第一个终端窗口的oneliner term_sendkeys:
:cal term_sendkeys(term_list()[0], join(map(getbufline(bufnr('.'), 1, '$'), 'v:val . "\n"'), ''))
Run Code Online (Sandbox Code Playgroud)
您可以.vimrc像这样简单地定义一个映射来执行oneliner :
nnoremap <leader>p :<c-u>cal term_sendkeys(term_list()[0], join(map(getbufline(bufnr('.'), 1, '$'), 'v:val . "\n"'), ''))<Cr>
Run Code Online (Sandbox Code Playgroud)
但是,单眼一眼很难理解,因此最好将其定义为一个函数并定义一个映射以进行调用:
function! s:SendLinesToTerm()
let term_buf = term_list()[0]
let lines = getbufline(bufnr('.'), 1, '$')
let str = join(map(lines, 'v:val . "\n"'), '')
cal term_sendkeys(term_buf, str)
endfunction
nnoremap <leader>p :call <SID>SendLinesToTerm()<Cr>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
239 次 |
| 最近记录: |