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

Vim 如何删除直到(不包括)行上的最后一个字符,vim,shortcut,Vim,Shortcut,我想删除一个以大量括号结尾的序列,而不是计算括号的确切数目来执行d[count]f),我想删除一行中的前最后一个字符 我试过,但没有成功 编辑:最终,我们可以排除更多字符吗?您可以使用或视觉选择。例如标记: 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 如果需要在行尾保留几个字

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

我试过,但没有成功

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

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

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
。例如:

ma$3hd`a
视觉选择:

v$3hx
使用一个必需参数定义命令:

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

command -nargs=1 DelToEOL :call DelToEOL(<args>)
函数!德尔托奥尔(北)
执行“正常v$”。字符串(a:n+1)。'hx'
端功能
命令-nargs=1 DelToEOL:call DelToEOL()

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

因此,我看到真正的问题是“如何删除直到(不包括)行上的最后一个字符。”


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

您的问题不清楚。您这里所说的“句子”到底是什么意思"? 这与
:h句中的内容相同吗?我的问题不是特定于vim中定义的文本对象。我想删除到行尾,除了我想保留的最后一个字符。最后一个字符不一定像句号、问号或感叹号那样特殊。他甚至可能出现在我想删除的部分。我必须键入删除命令吗?或者有没有办法告诉vim,我想在正常模式下删除行前最多[count]个字符?那么,你能重新写下你的问题吗?这样,你的问题最终变得清楚了吗?这不是“移动”,也不是“句子”。就我现在的理解来说是“删除到(不包括)行中的最后一个字符”。顺序比句子更清楚吗?我删去了两句话,以便让其他观众能把问题缩短。我还添加了一个问题,因为下一个问题似乎是合乎逻辑的。我想可以。关于排除几个字符,我认为最好不要弄乱一些复杂的文本对象,而只需在视觉模式下进行操作,比如
v$hh…d
或诸如此类的操作。这对我来说几乎没问题。我避免对我想删除的东西使用标记,因为它可能会删除以前的标记,我喜欢保留字符作为代码部分的助记别名(m代表main,通常是我通常跳转到的函数、方法或类名称的第一个字母)。像
v$hd
这样的视觉选择对我来说就足够了。如何将其转换为带计数器的命令?谢谢,这很有效。很抱歉,由于我的标题令人困惑,对我引导您进入的问题产生了误解。我很抱歉不能接受不止一个答案来感谢您,因为您在编辑之前确实以staten的身份回答了我的问题。