XCode : How to use cmd + x to either cut the current line (if no text is selected) or cut the selected text
Pressing cmd + x
without selecting text in other IDEs, cuts the complete line. Same goes for cmd + c
which copies, instead of cutting. Otherwise, if some text is selected, only that region is cut.
How do I do this in XCode?
I added the following in the IDETextKeyBindingSet.plist
to add cutting line and copying line functionality :
<key>My Custom Commands</key>
<dict>
<key>Cut Current Line</key>
<string>selectLine:, cut:</string>
<key>Copy Current Line</key>
<string>selectLine:, copy:</string>
</dict>
But obviously binding these to cmd + x
(or c) doesn't allow cutting/copying selected region. I understand I can set it to some other keybinding. But, as a force of habit, cmd + x
(or c) suits better.
Is there any way to do this? Maybe an extension?
[PS I asked the same question on StackOverflow, but realised, this is more apt place]
Solution 1:
That is correct. (Xcode 10)
- Add the entry for cut line and copy line in the
IDETextKeyBindingSet.plist
file - Save the
IDETextKeyBindingSet.plist
- Restart Xcode
- Set a key for the new command through xcode > preferences > key bindings > My Custom Commands
- Resolve conflicts
Example: /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Cut and Copy</key>
<dict>
<key>Cut Current Line</key>
<string>selectLine:, cut:</string>
<key>Copy Current Line</key>
<string>selectLine:, copy:</string>
</dict>
<key>Duplication</key>
<dict>
<key>Duplicate Current Line</key>
<string>moveToBeginningOfLine:, deleteToEndOfLine:, yank:, insertNewline:, moveToBeginningOfLine:, yank:</string>
<key>Duplicate Lines</key>
<string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string>
<key>Delete Line</key>
<string>selectLine:, deleteBackward:</string>
</dict>
</dict>
</plist>
Xcode keybinding (Cut and Copy):
Xcode conflict resolve (Cut and Copy):