Python 应用于vim中选择的功能

Python 应用于vim中选择的功能,python,vim,Python,Vim,我正在编写一个函数,用于在vim在ssh会话中运行时删除所选文本(以特殊方式): python << EOF def delSelection(): buf = vim.current.buffer (lnum1, col1) = buf.mark('<') (lnum2, col2) = buf.mark('>') # get selected text # lines = vim.eval('getline({}, {})'.

我正在编写一个函数,用于在vim在ssh会话中运行时删除所选文本(以特殊方式):

python << EOF
def delSelection():
    buf = vim.current.buffer
    (lnum1, col1) = buf.mark('<')
    (lnum2, col2) = buf.mark('>')

    # get selected text
    # lines = vim.eval('getline({}, {})'.format(lnum1, lnum2))
    # lines[0] = lines[0][col1:]
    # lines[-1] = lines[-1][:col2+1]
    # selected =  "\n".join(lines) + "\n"
    # passStrNc(selected)

    # delete selected text
    lnum1 -= 1
    lnum2 -= 1
    firstSeletedLine = buf[lnum1]
    firstSeletedLineNew = buf[lnum1][:col1]
    lastSelectedLine = buf[lnum2]
    lastSelectedLineNew = buf[lnum2][(col2 + 1):]
    newBuf = ["=" for i in range(lnum2 - lnum1 + 1)]
    newBuf[0] = firstSeletedLineNew
    newBuf[-1] = lastSelectedLineNew
    print(len(newBuf))
    print(len(buf[lnum1:(lnum2 + 1)]))
    buf[lnum1:(lnum2 + 1)] = newBuf

EOF


function! DelSelection()
python << EOF
delSelection()
EOF
endfunction

python << EOF
import os
sshTty = os.getenv("SSH_TTY")
if sshTty:
    cmd6 = "vnoremap d :call DelSelection()<cr>"
    vim.command(cmd6)
EOF

python好的,我知道了。我只需要在调用函数之前添加一个Esc键:

python << EOF
import os
sshTty = os.getenv("SSH_TTY")
if sshTty:
    cmd6 = "vnoremap d <esc>:call DelSelection()<cr>"
    vim.command(cmd6)
EOF

python这是因为
自动插入
,标准的方法是
:…
cmd6 = "vnoremap d :<C-u>call DelSelection()<cr>"