如何删除直到(不包括)该行的最后一个字符

How to delete until (and not including) the last char on the line

我想删除一个以大量括号结尾的序列,而不是计算括号的确切数量来执行 d[count]f),我想删除一行中的前一个字符。

我尝试了 dt$ 但没有成功。

编辑:最终,我们可以排除更多字符吗?

您可以使用 marks 或视觉选择。例如标记:

ma$d`a

拆分命令:

ma Mark the current cursor position with mark a
$ Go to the last character in the line
d`a Delete back to the mark a

如果您需要在行尾保留几个字符,请在 $ 之后添加 Nh。例如:

mahd`a

视觉选择:

vhx

用一个必需的参数定义一个命令:

function! DelToEOL(n)
    execute 'normal v$' . string(a:n + 1) . 'hx'
endfunction

command -nargs=1 DelToEOL :call DelToEOL(<args>)

+ 1 是必需的,因为视觉选择会选择应排除的当前字符。

所以我看到真正的问题是“如何删除直到(不包括)行中的最后一个字符。

答案是:dv$。参见 :h exclusive:h o_v