18

键入代码时,我通常会关闭括号,返回内部,走出外部,键入分号等:

我可以从(| 是插入符号)开始:

System.out.println()|

然后向左走:

System.out.println(|)

然后这个:

System.out.println(foo()|)

再次回溯一个空格:

System.out.println(foo(|))

键入引号是相似的:

System.out.println(foo(""|))

...ETC。

我的右手在主行和箭头键之间不断移动。我已经尝试过 vim,虽然我知道基础知识,但对我来说仍然感觉很尴尬。

我该怎么做?我应该从左到右输入(左括号,然后是内容,然后是右括号,然后是分号)?

谢谢。

4

12 回答 12

10

首先,在 Vim 中使用, h,j代替箭头键可以提高速度。有关这些键的概述,请参阅Learning Vim the Pragmatic Waykl

但是,在这种情况下,您可能想要的是AutoClose插件。它会自动插入右括号(或引号)和开头,并在它们之间放置插入符号。这样你就从

System.out.println(|)

System.out.println(foo(|))

System.out.println(foo("|"))

如果您随后键入")),插入符号将“移过”结束字符,而不是插入新字符。虽然,到达行尾的更快方法可能是<Esc>A.

System.out.println(foo(""));

因此,综上所述,上述内容可以通过键入来生成System.out.println(foo("<Esc>A;

编辑成对的字符,而不是插入它们,见环绕.vim

于 2009-06-21T11:21:44.980 回答
6

好吧,那是 Java,如果您使用或多或少好的 IDE,您应该能够自动完成,这样当您键入“System.out.println”并按 Enter 接受自动完成时,括号将显示,插入符号将是在中间(哦,还有引号!)

于 2009-06-21T02:23:41.357 回答
5

如果您已经在 vim 中,请尝试使用 h、j、k 和 l 键。它们的作用与箭头键相同,但更方便。尝试养成按顺序打字的习惯可能也会有所帮助,但这需要一些努力。

于 2009-06-21T02:19:08.480 回答
4

您可以通过按住 Ctrl 键并使用箭头键来保存击键。它不是移动一个字符,而是一次移动一个单词。这在退格时也有效。所以 Ctrl-Backspace 将删除整个单词,而不仅仅是最后一个字符。

于 2009-06-21T02:40:47.327 回答
3

试试 AutoHotKey 和我的脚本:

*!I::SendInput, % (GetKeyState("Shift", "P") ? "+" : "") (GetKeyState("Ctrl", "P") ? "^" : "") "{Up}"
*!K::SendInput, % (GetKeyState("Shift", "P") ? "+" : "") (GetKeyState("Ctrl", "P") ? "^" : "") "{Down}"
*!J::SendInput, % (GetKeyState("Shift", "P") ? "+" : "") (GetKeyState("Ctrl", "P") ? "^" : "") "{Left}"
*!L::SendInput, % (GetKeyState("Shift", "P") ? "+" : "") (GetKeyState("Ctrl", "P") ? "^" : "") "{Right}"
*!U::SendInput, % (GetKeyState("Shift", "P") ? "+" : "") (GetKeyState("Ctrl", "P") ? "^" : "") "{Home}"
*!O::SendInput, % (GetKeyState("Shift", "P") ? "+" : "") (GetKeyState("Ctrl", "P") ? "^" : "") "{End}"
*!h::SendInput, % (GetKeyState("Shift", "P") ? "+" : "") (GetKeyState("Ctrl", "P") ? "^" : "") "{Del}"

LAlt & Shift:: ('可选行')

这是关于按住 LAlt + 按下以下内容:i、k、j、l(箭头键)、u、o(home、end)或 h(删除)。如果您不想更改键盘语言,最后一行是可选的。LAlt + Shift 布局

您甚至可以将它与 shift 和 ctrl 等修饰符结合使用。

请享用 ;)

于 2012-05-03T19:33:46.820 回答
3

不。

你结束你开始的事情的习惯——无论是右括号、括号、大括号,还是匹配 .Open() 的 .Close() 调用,或匹配你的 new/malloc 的 delete/free 调用——都是一个很好的习惯. 即使您打算在不同的范围内“关闭”您的对象(如终止函数),您的习惯也会迫使您考虑正确释放资源。

是的,有一些有用的编辑器可以让您更快地编码,您绝对应该使用它们,但不要让它们成为让您忘记关闭对象/释放资源的拐杖。

您问题的直接答案:大多数优秀的程序员编辑器都可以自定义/配置,因此您只需阅读一些有关您选择的编辑器的高级配置的信息 - vim、emacs、Visual Studio 编辑器。

于 2009-06-21T02:37:45.587 回答
2

我会完全推荐 vim ......因为它会帮助很多!另外,请查看可以为您自动关闭括号、方括号和大括号的内容......我在 vim 中有一些东西可以做到这一点,它有助于解决这类问题,因为我已经在括号内了。

于 2009-06-21T02:21:48.880 回答
1

我曾经完全线性地输入(是的,在 vim 中),永远无法掌握编写关闭元素立即创建的来回冲刺的窍门。

但是,我现在使用 Eclipse——它会在我去的时候为我创建它们,所以在结束时我只是打完并输入一个 ;,根本不需要手动处理它。有时让我感到困惑,但没关系。

于 2009-06-21T03:54:15.710 回答
1

一个好的 IDE(伽利略几乎就在这里)会自动关闭括号、括号等,并且会在语句的末尾智能地插入一个分号。根本不需要使用箭头!

当然,对于 Eclipse 中的 println,您只需键入 sysout,但这可能是一个不好的习惯。

但小心点!如果你开得太快,你的同事总是会让你开车:P

于 2009-06-21T11:56:18.357 回答
1

再次投票给 Vim。此外,对于使用 Vi 键绑定的更多标准 IDE,还有一些很棒的插件。我不时在 Netbeans 中使用jVI 。

你会发现,你使用 Vim 的次数越多,它在你的手腕上就越轻松。您还会发现,一个足够聪明的查找/替换可以为您节省不少击键次数,就像全局操作正则表达式一样。

将 :tabn 和 :tabp 绑定到可访问的东西上,并强迫自己完成工作而不放弃并使用适当的 GUI 编辑器。

于 2009-06-21T03:15:41.330 回答
1

我发现数字键盘使导航非常容易,因为 home 键和 pgup 键非常接近。对于实际输入数字,您只需使用键盘的第一行(我同意这很难学习,但一段时间后足够快)。

对我来说,唯一的缺点是使用笔记本电脑键盘和使用其他人的机器,我每次都必须关闭数字锁定。

于 2009-06-21T04:06:03.920 回答
0

对我来说解决这个问题的最好方法是将键盘上的第二个布局更改为

h -> Left Arrow, j -> Up Arrow, k -> Down Arrow, l -> Right Arrow

现在,当我按下右手拇指下方的 Fn 按钮时,我得到了类似 Vim 的导航。我就是喜欢它。它对所有程序都是通用的。我还设置了一些其他键,Page Up、Page Down 等。

于 2021-08-10T18:45:20.730 回答