【问题标题】:Selecting (and deleting) entire function with definition (INCLUDING whitespace) in Vim在 Vim 中选择(和删除)具有定义(包括空格)的整个函数
【发布时间】:2018-12-25 21:40:10
【问题描述】:

我最近改用 Vim(带有 VSCode)作为我的编辑器。

我正在尝试删除一个在 JavaScript 中定义的函数。我在 google 和 StackOverflow 上查看,发现 this question。不幸的是,这个问题的答案只适用于没有空格的函数。

这是我的函数的外观:

const useBattery = () => {
  const [battery, setBattery] = useState({ level: 0, charging: false });
  const handleChange = ({ target: { level, charging } }) => setBattery({ level, charging });

  useEffect(() => {
    let battery;
    navigator.getBattery().then(bat => {
      battery = bat;
      battery.addEventListener("levelchange", handleChange);
      battery.addEventListener("chargingchange", handleChange);
      handleChange({ target: battery });
    });
    return () => {
      battery.removeEventListener("levelchange", handleChange);
      battery.removeEventListener("chargingchange", handleChange);
    };
  }, []);
  return battery;
};

我尝试了几种方法,当我的光标在函数内时,最好的方法是da{。这个动作会删除函数体,但不会删除定义。

如果函数中有空格,有什么方法可以使用 Vim 删除函数和定义?

【问题讨论】:

  • VS 代码放在一边。 Vim 不知道函数是什么。它只对文本进行操作。所以da} 非常好(取决于光标位置,可能需要计数)。杰里米的回答也很好。我怀疑你能不能再靠近一点。

标签: vim visual-studio-code editor


【解决方案1】:

从函数内部,如您所说,da{ 仅删除大括号及其内容,没有前面的声明或后面的分号。但是...如果我们切换到 linewise...?

:help exclusive-linewise 下方有一个半隐藏部分,标题为粗体,但没有可跳转到的标签:“FORCING A MOTION TO BE LINEWISE, CHARACTERWISE OR BLOCKWISE”,表示我们可以切换到非默认选择在运算符之后立即使用 v(按字符)、V(按行)或 Ctrl-V(按块)。所以...

dVa{

【讨论】:

    【解决方案2】:

    正如您链接到的帖子中所述,d]] 当光标放在函数定义的开头时,将删除整个函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2022-11-23
      • 1970-01-01
      • 2011-10-21
      • 2011-10-16
      相关资源
      最近更新 更多