下面是我在vim中编辑的代码片段。 目前我的光标位于插入模式下的< cursor> 。 我想删除光标上方的大括号( {)。 什么是实现它的最佳方式。
目前我这样做如下所示
ESC => to go back to escape mode
k => to move up to previous line
x => delete {
j => to move back to the original line
i => switch back to insert mode to continue my editing
long long modpow(long long a, long long b)
{
while (b != 1) { <-- delete
a = a *<cursor> temp;
我的按键可以减少吗?
提前致谢
答案 0 :(得分:4)
我不会专注于击键减少。相反,我想专注于如何将其分解为更小的助记符:
<esc>
mm
[{
(首选),?{<cr>
或较慢的方法完成,例如k$
x
(首选),dl
或s
,如果我们要用某些内容替换它。`^
,``
,已知标记`m
,<c-o>
,g;
(两次)移回到上一个插入位置,或者gi
返回最后一个插入并重新插入插入模式这概述了如何思考每件作品以及如何思考它的选项。我个人会做以下事情:
<esc>[{x``a
注意:这不是最快的(我应该使用gi
),但这是我的想法,我发现在我的工作流程中常常使用``
来提供帮助
有关详细信息,请参阅:
:h ``
:h x
:h [{
:h ?
:h m
:h s
:h ctrl-o
:h `^
:h g;
:h gi
答案 1 :(得分:1)
先说几句:
你的代码示例是乱七八糟的尾随空格,你有比计算击键更重要的事情,
您列出的命令无法执行您想要的操作,因为左括号根本不在光标上方:
long long modpow(long long a, long long b)
{
while (b != 1) {
a = a *| temp;
<Esc>kxji
long long modpow(long long a, long long b)
{
while b != 1) {
a = a |* temp;
与Vim中的所有内容一样,有许多方法可以实现您的目标。
使用与示例相同的策略,但使用正确的命令和大量按键:
<Esc>klllllllllxjhhhhhi
使用相同的策略,但击键次数少得多:
<Esc>k$xjT*
使用不同的策略:
<Esc>?{<CR>xgi
请注意,删除该左大括号将留下一个尾随空格,因此您可能应该重新考虑一下“计划”:
<Esc>? {<CR>Dgi