如何在OSX上选择一行?


8

我正在编辑文本。选择行的麻烦方法是转到行的开头(cmd <-),然后选择整行到结尾(Shift cmd->)。我可以做得更好吗?

也欢迎使用剪切线并将其存储在缓冲区中的快捷方式。(cmd D)不会将行存储在缓冲区中。


1
您在哪个程序中编辑文本?
ForeverWintr

通常是在当时的Eclipse中,但我希望尽可能为每个应用程序提供一个通用的解决方案。
大卫Natingga

在os x home的有效键盘上,然后shift-end将选择整行,但是您可能没有完整的键盘。同样,在大多数应用中,将光标定位在行首,然后按住shift键并按下向下箭头即可。
sdjuan

Answers:


10

我总是使用以下内容:

  • cmd - Left arrow 到达行首
  • shift + cmd + right arrow 标记线
  • cmd - C(或cmd - X)将标记的行复制(或剪切)到剪贴板

然后,我可以走到我喜欢的任何地方,并用粘贴行cmd - v

但是由于MacOS可以牢固地固定在图形用户界面上,而无需使用鼠标,但有时-就像您的情况-涉及一次按键的次数多于一次按键的次数。


1
几乎右:shift + cmd-向右箭头标记该行,而不是shift + cmd-向下箭头。
凯文·勒

1
shift + cmd +向下箭头标记包括换行符的当前行,shift + cmd +右箭头标记不包括换行符的行。所以我们都没错;)
heiglandreas 2015年

5

大多数接受文本输入的应用程序(终端,TextEdit,Safari的URL /搜索栏等)都接受包括以下内容的标准键绑定(不确定是哪种标准... ANSI,ASCII?)

control+ a行首

control+ e行尾

因此,control+ shift+ a or e根据您的位置选择一条线。

也:

control+ shift+ k杀死到行尾

control+ shift+ y抽出(从缓冲液)

可以使用bindkeyTerminal中的命令生成完整列表,尽管并非所有应用程序都能正常运行。


1
OS X文本视图不使用readline,它们恰好在emacs模式下支持许多与readline相同的键绑定。即使您可以在DefaultKeyBinding.dict中定义它们,Cu,C- @和Cw在默认情况下也不能在普通文本视图中工作。
Lri

在发布之前,我已经测试了所有内容……只是我在命令提示符下进行了此操作。h
Nevin Williams

很好,但我仍在寻找可在全球范围内使用的产品。
Louis Waweru 2014年

2

您可以~/Library/KeyBindings/像这样创建和保存属性列表DefaultKeyBinding.dict

{
    "~l" = selectParagraph:;
    "~z" = (selectParagraph:, delete:);
    "~x" = (selectParagraph:, cut:);
    "~c" = (selectParagraph:, copy:);
}

重新打开应用程序后,例如,⌥L应该在大多数本机文本视图中选择一行。但是,它在Eclipse,Terminal或Xcode中不起作用。有关更多信息,请参阅Cocoa Text System文章或我的网站

另一个选择是使用KeyRemap4MacBook并将类似这样的内容保存为private.xml

<?xml version="1.0"?>
<root>
<item>
<name>test</name>
<identifier>test</identifier>
<not>TERMINAL</not>
<not>EMACS</not>
<not>VIRTUALMACHINE</not>
<not>ECLIPSE</not>
<autogen>__KeyToKey__ KeyCode::L, VK_OPTION | ModifierFlag::NONE, KeyCode::A, ModifierFlag::CONTROL_L, KeyCode::E, ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L, KeyCode::CURSOR_RIGHT, ModifierFlag::SHIFT_L</autogen>
</item>
<item>
<name>test2</name>
<identifier>test2</identifier>
<only>ECLIPSE</only>
<autogen>__KeyToKey__ KeyCode::L, VK_OPTION | ModifierFlag::NONE, KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_L, KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L | ModifierFlag::SHIFT_L, KeyCode::CURSOR_RIGHT, ModifierFlag::SHIFT_L</autogen>
</item>
</root>

在大多数应用程序中,⌃A移至展开的行的开头,而⌘←移至换行的开头,但是⌃A在Eclipse中似乎不起作用。

有关关键代码值预定义设置,请参见源。


1

我发现了一个似乎可以在所有Cocoa应用程序中使用的解决方案homeend键的行为类似于非Apple机器(转到行的开头/结尾而不是整个文档)。

文件~/Library/KeyBindings/DefaultKeyBinding.dict需要包含以下内容:

{
    /* home */
    "\UF729"  = "moveToBeginningOfLine:";
    "$\UF729" = "moveToBeginningOfLineAndModifySelection:";

    /* end */
    "\UF72B"  = "moveToEndOfLine:";
    "$\UF72B" = "moveToEndOfLineAndModifySelection:";
}

如果文件或目录不存在,请将上面的代码片段复制到您的...粘贴板上,打开Terminal并输入以下两个命令:

mkdir ~/Library/KeyBindings
pbpaste > ~/Library/KeyBindings/DefaultKeyBinding.dict

要使其正常运行,可能需要重新启动该应用程序。


1

我很惊讶没有人提到这个

Shift + CMD +左箭头(如果位于开头,则为右箭头)


不,@ heiglandreas在回答中提到了(没有明确提及,但他做到了)。请参阅第二个项目符号。
C0deDaedalus

1

macOS优于(WIN / Linux)的优点之一是几乎每个文本框中都有全局emacs样式的快捷键绑定(Microsoft Office for Mac例外,它烦人地重新定义了这些快捷键...)

关于这个问题,我总是用到C-a行首,C-S-e选择直到行尾,然后用“ CMD-c”来复制。

如果您碰巧遇到了一条跨越许多文字行的行(以\ n结尾),我通常会执行以下操作:

1)C-a进入生产线的起点

2)C-n转到下一个文字行的开头

3)C-b返回一个字符

4)C-S-a选择直到行首

5)CMD-c复制内容

可能是一个复杂的解决方案,但应该可以在macOS的大多数文本框中使用。


0

control+ shift+aef

(在按住Control和Shift的同时输入aef

这与单击三行的结果相同。

请注意,这包括选择中的尾随EOL。如果这不是您想要的,请忽略f

作为奖励,在f之后,反复按n以选择多行。

在Xcode和TextEdit中测试。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.