@@ -729,33 +729,60 @@ const deleteLast = () => {
729
729
const cursorPosition = input .selectionStart || 0 ;
730
730
if (cursorPosition === 0 ) return ;
731
731
732
- // 检查是否在删除变量
732
+ // 先检查是否在删除运算符
733
+ const operatorAtCursor = InputService .checkCursorAroundOperator (
734
+ displayExpression .value ,
735
+ cursorPosition
736
+ );
737
+
738
+ // 检查前一个位置是否有变量
733
739
const variableAtCursor = InputService .checkCursorInVariable (
734
740
displayExpression .value ,
735
741
cursorPosition - 1 ,
736
742
props .variables
737
743
);
738
744
739
- if (variableAtCursor ) {
740
- // 变量删除逻辑保持不变
745
+ // 如果光标紧跟在运算符后面
746
+ if (operatorAtCursor && operatorAtCursor .end === cursorPosition ) {
747
+ // 删除运算符
748
+ const before = displayExpression .value .slice (0 , operatorAtCursor .start );
749
+ const after = displayExpression .value .slice (operatorAtCursor .end );
750
+ displayExpression .value = before + after ;
751
+ expression .value = convertDisplayToReal (displayExpression .value );
752
+
753
+ nextTick (() => {
754
+ const newPosition = operatorAtCursor .start ;
755
+ input .setSelectionRange (newPosition , newPosition );
756
+ input .focus ();
757
+ });
758
+ }
759
+ // 如果光标在变量结尾
760
+ else if (variableAtCursor && variableAtCursor .end === cursorPosition ) {
761
+ // 删除整个变量
741
762
const before = displayExpression .value .slice (0 , variableAtCursor .start );
742
763
const after = displayExpression .value .slice (variableAtCursor .end );
743
764
displayExpression .value = before + after ;
744
- } else {
745
- // 获取光标前的字符
746
- const beforeCursor = displayExpression .value .slice (0 , cursorPosition );
747
- const afterCursor = displayExpression .value .slice (cursorPosition );
765
+ expression .value = convertDisplayToReal (displayExpression .value );
748
766
749
- displayExpression .value = beforeCursor .slice (0 , - 1 ) + afterCursor ;
767
+ nextTick (() => {
768
+ const newPosition = variableAtCursor .start ;
769
+ input .setSelectionRange (newPosition , newPosition );
770
+ input .focus ();
771
+ });
750
772
}
773
+ // 其他情况,删除单个字符
774
+ else {
775
+ const before = displayExpression .value .slice (0 , cursorPosition - 1 );
776
+ const after = displayExpression .value .slice (cursorPosition );
777
+ displayExpression .value = before + after ;
778
+ expression .value = convertDisplayToReal (displayExpression .value );
751
779
752
- expression .value = convertDisplayToReal (displayExpression .value );
753
-
754
- nextTick (() => {
755
- const newPosition = cursorPosition - 1 ;
756
- input .setSelectionRange (newPosition , newPosition );
757
- input .focus ();
758
- });
780
+ nextTick (() => {
781
+ const newPosition = cursorPosition - 1 ;
782
+ input .setSelectionRange (newPosition , newPosition );
783
+ input .focus ();
784
+ });
785
+ }
759
786
760
787
// 添加到历史记录
761
788
addToHistory (displayExpression .value );
0 commit comments