[proc_selProc.tcl]
proc selProc {str offset count} {
return [string range $str $offset [expr {$offset + $count -1}]]
}
set myVar Hello
selection handle -selection . [list selproc $myVar]
selection own .
工具 > 源代码./proc_selPorc.tcl
然后使用鼠标中键单击将其粘贴到 vi 编辑器中。
一开始效果很好。
[通过 aa.rpt]
你好
但是,当我尝试如下时,我仍然得到“Hello”而不是“AAA”。
set myVar AAA
selection handle . [list selproc $myVar]
selection own .
[vi aa.rpt]
你好;#<- not printed "AAA"
我该怎么办?
我尝试了很多方法,但无法解决。
选型明确;选择得到;主要选择等...
奇怪的是,选择处理程序似乎无法更改。 Wish 继续使用您为窗口提供的第一个命令。这对我来说看起来像是一个错误。解决这个问题的一种方法是使用全局变量进行选择,而不是尝试更改处理程序。
proc selProc {offset count} {
global selection
return [string range $selection $offset [expr {$offset + $count -1}]]
}
set selection Hello
selection handle . selProc
selection own .
# Middle-click pastes "Hello"
set selection AAA
selection own .
# Middle click pastes "AAA"