检测用户何时取消Vim中的输入字段

检测用户何时取消Vim中的输入字段,vim,Vim,我正在Vim中编写一个自定义函数,并要求用户选择要重命名的文件: 让b:newname=input('重命名为:',展开('%')) 但是,如果用户决定不重命名文件并按Esc键,如何在Vim功能中检测到这一点?如果使用取消操作,则输入返回空值。因此,您可以直接使用empty()进行检查: 如果使用取消操作,则输入返回空值。因此,您可以直接使用empty()进行检查: 如果变量为空或不为空,则可以检查变量的值。如果变量为空或不为空,则可以检查变量的值。但这与以下情况相同:1。用户希望输入一个空值来

我正在Vim中编写一个自定义函数,并要求用户选择要重命名的文件:

让b:newname=input('重命名为:',展开('%'))


但是,如果用户决定不重命名文件并按Esc键,如何在Vim功能中检测到这一点?

如果使用取消操作,则输入返回空值。因此,您可以直接使用
empty()
进行检查:


如果使用取消操作,则输入返回空值。因此,您可以直接使用
empty()
进行检查:


如果变量为空或不为空,则可以检查变量的值。如果变量为空或不为空,则可以检查变量的值。但这与以下情况相同:1。用户希望输入一个空值来更新使用输入数据的任何函数;2.用户希望取消输入过程。是否有办法区分
\n
换行符和空值?是的,但是
input()
不会发送尾随
\n
。我认为在这种情况下没有办法区分空的和取消的。另一种选择是使用
inputdialog()
。发现使用
getchar()
应该会有所不同的答案:但这与以下情况没有区别:1。用户希望输入一个空值来更新使用输入数据的任何函数;2.用户希望取消输入过程。是否有办法区分
\n
换行符和空值?是的,但是
input()
不会发送尾随
\n
。我认为在这种情况下没有办法区分空的和取消的。另一种方法是使用
inputdialog()
。发现使用
getchar()
应该会有所不同:
if empty(b:newname)
    " either cancelled or empty answer
endif