我曾经使用M-d删除行中的长子字符串,如:
if ( aaaaa[dddd(d,s,d)] + bbbbbb[ssd] ) {
但是我总是讨厌我需要删除最后一个括号。例如,要删除第一项aaaaa[dddd(d,s,d)]
,我需要按M-d 4次,C-d按2次。
我想知道,是否有一个命令会删除所有东西,直到一个右括号,对应第一个开括号?
因此,如果您的光标位于dddd(d,s,d)
,则应删除整个d
,如果您从aaaaa[dddd(d,s,d)]
开始,则应删除整个a
,如果您从if ( aaaaa[dddd(d,s,d)] + bbbbbb[ssd] )
开始,则应删除整个M-d C-space M-C-f C-w
行的开头。
原则上,一组命令{{1}}将完成这项工作,但我正在寻找一种标准解决方案。
答案 0 :(得分:3)
尝试M-C-k
(kill-sexp
)或M-z ]
(zap-to-char
)。
答案 1 :(得分:1)
smartparens-mode
(https://github.com/Fuco1/smartparens或MELPA)知道如何处理括在各种类型的括号/括号/等中的表达式。它的行为通常是语言特定的。例如,如果你绑定
(define-key sp-keymap (kbd "C-M-k") 'sp-kill-sexp)
然后如果您在表达式中的第一个(
, C-M-k 将会杀死包括最终)
在内的所有内容。或者看看c++ example。我意识到这不是你描述的确切行为,但包有很多(特定于模式)调整配置选项。
作为替代方案,常规zap-up-to-char
和zap-to-char
接受数字参数。我将zap-up-to-char
绑定到 M-z ,所以,说 C-u 2 M-z)将所有内容杀死到最终)
。
答案 2 :(得分:0)
我正在使用this question中的代码 做你描述的任务。
它基本上是一个广义的kill-sexp
- 它会杀死它
任何有内在点的列表。也适用于字符串。