1

我正在尝试过渡到 emacs(使用邪恶模式/vim 键绑定),我很难感觉比只使用鼠标更有效率/生产力。这是我发现自己真的很慢的情况示例:

for i in range(self.allData.shape[0]):
    self.correctSequence = self.displayNumbers(i, self.allData)
    self.userSequence = self.numberEntry()

    self.allData.set_value(i, 'userSequence', ''.join(self.userSequence))

    if len(self.correctSequence) != len(self.userSequence):
        self.allData.set_value(i, 'correct', 0)
    else:
        if list(reversed(self.correctSequence)) == self.userSequence:
            self.allData.set_value(i, 'correct', 1)
        else:
            self.allData.set_value(i, 'correct', 0)

对我来说,必须将前 4 个实例更改为self.allData其他内容(self.testData例如,),而最后 2 个保持不变是很常见的。

通常这对鼠标来说不会太糟糕。例如,我可以用 替换第一个allDatatestData复制它,使用鼠标到接下来的 3 个出现处,然后为每个出现处按下 CTRL-V。或者更好的是,只需在 sublime/atom 中使用多个游标并一次性替换所有 4 个

我在 emacs 中使用带有 vim 键绑定的 spacemacs。因此,在 emacs 中,我发现自己必须执行以下操作:

  1. SPC-SPC a(avy 跳转到以 a 开头的单词)
  2. cw testData

对我要替换的每个单词重复这两个步骤

这似乎真的低效,我想知道:我只是使用低效的方法吗?有没有更快的方法来做我想做的事?

似乎即使我设法非常快地完成了这些步骤(4 次),仍然需要做更多的打字工作,而且我看不出这会比仅仅伸手去拿鼠标要快得多。是的,有人可能会说我不断地伸手去拿鼠标是在浪费时间,但在我看来,我伸手去拿鼠标是在节省打字时间,因为我可以按几次 CTRL-V 来实现我想要的想。在这种情况下,vim 的速度提升到底在哪里?

4

3 回答 3

3

如果你只是想替换,你可以使用query-replace, 并一个一个替换这个词。

您也可以使用replace-string,但请记住将替换限制在缓冲区的一部分,激活该部分周围的区域。

无论如何,这些命令可能会阻止您通过眼睛找到单词,通过鼠标移动光标并将您的手移回键盘。他们也可以避免可能的忽视。至少我不想在打字时把手从键盘上移开。:)

于 2016-01-30T15:13:21.460 回答
2

我不确定 Spacemacs 有多“类 vim”,但你可以在 Vim 中这样做:

/all<CR>
cgntest<Esc>
.
.
.

或者:

/all<CR>
cetestData<Esc>
n.
n.
n.

或者:

:,$s/allD/testD/gc<CR>

也许其中一种方法也适用于 Spacemacs?

于 2016-01-30T17:40:16.020 回答
0

除了通常的(通常是最好的)答案query-replace(参见@songyuanyao 的答案)之外,您还可以利用辅助选择来选择性地将相同的东西粘贴到不同的地方。与region不同,辅助选择与光标位置(又名point)无关,因此无论光标在哪里,它始终可用。

与查询替换不同的是,您可以按需粘贴它,而不必为每个匹配项进行回答。如果您使用删除选择模式,那么只需选择一些文本来替换并粘贴辅助选择来替换它。

您可以使用鼠标设置和粘贴辅助选择 - 请参阅Emacs Wiki 上的辅助选择,并参阅 Emacs 手册,节点辅助选择

如果您使用库second-sel.el,那么您也可以使用键盘上的辅助选择,并从中获得更多用途。

于 2016-01-31T04:08:17.123 回答