我试图转换到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)
我必须将self.allData
的前4个实例更改为其他内容(例如self.testData
),最后2个保持不变。
通常这对鼠标来说太糟糕了。例如,我可以用allData
替换第一个testData
,复制它,将鼠标用于接下来的3次,然后按每个命中CTRL-V。或者更好的是,只需在sublime / atom中使用多个游标并一次性替换所有4个游标
我在emacs中使用带有vim键绑定的spacemacs。因此,在emacs中,我发现自己必须执行以下操作:
SPC-SPC a
(avy跳到以a开头的单词)cw testData
对于我要替换的每个单词重复这两个步骤
这似乎效率很低,我想知道:我只是使用效率低下的方法吗?有没有更快的方法来做我想要的?
似乎即使我设法快速完成这些步骤(4次),仍然需要做更多的打字,而且我看不出这会比仅仅达到鼠标更快。是的,有人可以通过不断地伸手去拿鼠标来争论我的时间,但在我看来,我通过伸手去拿鼠标来节省打字时间因为我可以按CTRL-V几次实现我想要的。在这种情况下,vim速度到底在哪里?
答案 0 :(得分:3)
如果您只想replace,则可以使用query-replace
,并逐个替换该字词。
您也可以使用replace-string
,但请记住将替换限制在缓冲区的一部分,激活该部分周围的区域。
无论如何,这些命令可能会阻止您用眼睛找到单词,用鼠标移动光标并将手移回键盘。他们也可以避免可能的忽视。至少我不想在打字时把手从键盘上移开。 :)
答案 1 :(得分:2)
我不确定“vim-like”Spacemacs是怎样的,但你可以在Vim中这样做:
/all<CR>
cgntest<Esc>
.
.
.
或:
/all<CR>
cetestData<Esc>
n.
n.
n.
或:
:,$s/allD/testD/gc<CR>
也许其中一种方法也适用于Spacemacs?
答案 2 :(得分:0)
除了通常(通常是最好的)答案query-replace
(参见@ songyuanyao&#39;答案)之外,您还可以使用辅助选择来有选择地粘贴在不同的地方同样的事情。与 region 不同,辅助选择与光标位置无关(又名 point ),因此无论光标位于何处,它都始终可用。
与查询替换不同,您可以按需粘贴,而不必为每个匹配事件回答。如果您使用delete-selection mode,则只需选择一些要替换的文本并粘贴辅助选项以替换它。
您可以使用鼠标设置和粘贴辅助选择 - 请参阅Emacs Wiki上的Secondary Selection,并参阅Emacs手册,节点Secondary Selection。
如果您使用库second-sel.el
,那么您也可以使用键盘中的辅助选择,并从中获得更多用途。