-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathcua-conflict.html
329 lines (270 loc) · 9.14 KB
/
cua-conflict.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>Preserving Emacs Commands while maintaining familiar shortcuts</title>
<link rel="stylesheet" type="text/less" href="./style/less/o-blog.less"/>
<link rel="stylesheet" type="text/css" href="./style/keys.css"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="generator" content="o-blog version 1.2-137-gea23db7"/>
<link rel="stylesheet" href="./style/keys.css" type="text/css" />
<script src="./style/js/less-1.3.0.min.js" type="text/javascript"></script>
<script src="./style/js/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="./style/bootstrap/js/bootstrap-modal.js" type="text/javascript"></script>
<script src="./style/bootstrap/js/bootstrap-transition.js" type="text/javascript"></script>
<script src="./style/bootstrap/js/bootstrap-dropdown.js" type="text/javascript"></script>
<script src="./style/bootstrap/js/bootstrap-collapse.js" type="text/javascript"></script>
<script src="./style/js/prettify.js" type="text/javascript"></script>
<script src="./style/js/o-blog.linenumber.js" type="text/javascript"></script>
<script src="./style/js/o-blog-fix.js" type="text/javascript"></script>
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="./index.html">ergoemacs-mode</a>
<div class="nav-collapse collapse">
<ul>
<li><a href="./features.html"><i>icon-cog icon-white</i> Features</a>
</li>
<li><a href="#"><i>icon-book icon-white</i> Documentation</a>
<ul>
<li><a href="./key-setup.html">Included Key Themes and Keyboard Layouts</a>
</li>
<li><a href="./cua-conflict.html">Preserving Emacs Commands while maintaining familiar shortcuts</a>
</li>
<li>
</li>
<li><a href="./key-themes.html">Key Themes</a>
</li>
<li><a href="./keyboard-layouts.html">Keyboard Layouts</a>
</li>
<li><a href="./minor-modes.html">Changes to Modes</a>
</li>
<li>
</li>
<li><a href="design-basis.html">Design Basis</a>
</li>
<li>
</li>
<li><a href="./faq.html">FAQ</a>
</li>
<li>
</li>
<li><a href="./bug-report.html">Bug report</a>
</li>
</ul>
</li>
<li><a href="#"><i>icon-file icon-white</i> Tips</a>
<ul>
<li><a href="./gradual-adoption.html">Gradual Adoption</a>
</li>
<li><a href="./system-wide.html">System Wide Keys</a>
</li>
<li><a href="./customize-keys.html">Customizing your keys</a>
</li>
<li>
</li>
<li><a href="./aliases.html">Making Commands Easier to Type</a>
</li>
<li><a href="./smart-commands.html">Smart Commands</a>
</li>
</ul>
</li>
<li><a href="./testimonials.html"><i>icon-comments-alt icon-white</i> Testimonials</a>
</li>
<li><a href="./changelog.html"><i>icon-pencil icon-white</i> Changelog</a>
</li>
<li><a href="./roadmap.html"><i>icon-tasks icon-white</i> Roadmap</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="subnav subnav-fixed visible-desktop">
<div class="container">
<ul class="breadcrumb">
<li><a href="./index.html">Home</a> <span class="divider">/</span></li>
<li>Preserving Emacs Commands while maintaining familiar shortcuts</li>
</ul>
</div>
</div>
<div id="page" class="container">
<article>
<div class="article-content">
<div id="outline-container-1" class="outline-3">
<h3 id="sec-1">Conflict for Emacs command keys and familiar shortcuts</h3>
<div class="outline-text-3" id="text-1">
<p>There is a conflict between standard shortcuts and emacs shortcuts.
In most applications Ctrl+c is copy and Ctrl+x is cut. In emacs
Ctrl+x generally refer to global commands, while Ctrl+c refers to
language specific commands.
</p>
<p>
Ergoemacs provides a few options to work with the Ctl+c and Ctl+x keys.
</p>
</div>
<div id="outline-container-1-1" class="outline-4">
<h4 id="sec-1-1">Binding Ctrl+c and Ctrl+x to both copy and cut and emacs keys</h4>
<div class="outline-text-4" id="text-1-1">
<p>Like <code>cua-mode</code>, <code>ergoemacs-mode</code> allows Ctrl+c and Ctrl+x to be
bound to both copy/cut, and the emacs key sequences.
</p>
<p>
The default method will copy text when selected with Ctrl+c and cut
text when selected with Ctrl+x. This is fine, but if you wish to
perform an emacs command on selected region, this could be problematic
as discussed in Xah's <a href="http://ergoemacs.org/misc/emacs_keybinding_and_cua-mode_keys.html">blog</a>. (For example python shift indent is bound
to 【Ctrl+c <】)
</p>
<p>
When you wish to do issue emacs commands on a region you can:
</p><ul>
<li>Add a shift to the first Ctrl+c and Ctrl+x.
<ul>
<li>For example press 【Ctrl+⇧ Shift+c <】 for python's shift indent
command
</li>
<li>This will not work in a terminal (most terminals cannot tell the
difference between 【Ctrl+⇧ Shift+c】 and 【Ctrl+c】)
</li>
</ul>
</li>
<li>Press the next key within 0.2 seconds.
<ul>
<li>This can be tuned by setting <code>ergoemacs-ctl-c-or-ctl-x-delay</code>
</li>
<li>If you tune this to a higher setting, it takes longer to copy and
cut and other problems may be introduced.
</li>
</ul>
</li>
</ul>
<p>
If you wanted the time required to press the next key be 1 second,
you could use the following in your emacs startup file:
</p>
<pre class="src src-emacs-lisp">(setq ergoemacs-ctl-c-or-ctl-x-delay 1)
</pre>
</div>
</div>
<div id="outline-container-1-2" class="outline-4">
<h4 id="sec-1-2">Binding Ctrl+c and Ctrl+x to emacs commands only</h4>
<div class="outline-text-4" id="text-1-2">
<p>Another option is to ditch copy and paste with Ctrl+c and Ctrl+x, even
though they are standard keys. Instead you can use Alt+c and Alt+x to
do copy and paste.
</p>
<p>
This can be done in ergoemacs by the following variable:
</p>
<pre class="src src-emacs-lisp">(setq ergoemacs-handle-ctl-c-or-ctl-x 'only-C-c-and-C-x)
</pre>
<p>
The disadvantage to this approach is that you use different keys in
different applications.
</p>
</div>
</div>
<div id="outline-container-1-3" class="outline-4">
<h4 id="sec-1-3">Binding Ctrl+c and Ctrl+x to only copy and cut</h4>
<div class="outline-text-4" id="text-1-3">
<p>If you wanted Ctrl+c and Ctrl+x to only be copy and cut, you add
the ability to copy/cut the current line when nothing is selected.
This can be done by:
</p>
<pre class="src src-emacs-lisp">(setq ergoemacs-handle-ctl-c-or-ctl-x 'only-copy-cut)
</pre>
<p>
The possible disadvantage to this is you would have to use another key
to access the defined emacs commands. Currently ergoemacs-mode allows
you to use QWERTY 【▤ Menu d】 or 【Ctrl+⇧ Shift+x】 to access emacs
Ctrl+x commands and QWERTY 【▤ Menu f】 or 【Ctrl+⇧ Shift+c】 to
access Ctrl+c commands.
</p>
<p>
The 【▤ Menu】 keybindings are slightly different than plan Ctrl+x or
Ctrl+c:
</p><ul>
<li>For Ctrl+x, the Alt and Ctrl keys are swapped. Hence for the
equivalent of 【Ctrl+x Ctrl+b】, you would press 【▤ Menu s Alt+b】
</li>
<li>For Ctrl+c, control keys are mapped to plain keys. Plain keys
are mapped to Alt keys. Alt keys are mapped to Ctl keys. Hence:
<ul>
<li>【Ctrl+c Ctrl+c】 would be 【▤ Menu f c】
</li>
<li>【Ctrl+c c】 would be 【▤ Menu f Alt+c】
</li>
<li>【Ctrl+c Alt+c】 would be 【▤ Menu f Ctl+c】
</li>
<li>This is called unchorded mapping
</li>
</ul>
</li>
<li>You can swap between Normal, Alt<->Ctl and unchorded keyboard
translations in ergoemacs by pressing 【▤ Menu】
</li>
</ul>
</div>
</div>
</div>
</div>
</article>
</div>
<div id="footer">
<div class="container">
<div class="row">
<nav class="span3">
<h1>About</h1>
<p>
This page explains how ergoemacs-mode works. It was written in emacs
org-mode and exported to HTML using <a href="https://github.com/renard/o-blog">o-blog</a>.
</p>
</nav>
<nav id="links" class="span3">
<h1>Links</h1>
<ul>
<ul>
<li><a href="./index.html"><i>icon-home icon-white</i> Home</a>
</li>
</ul>
<ul>
<li><a href="./testimonials.html"><i>icon-comments-alt icon-white</i> Testimonials</a>
</li>
<li><a href="./changelog.html"><i>icon-pencil icon-white</i> Changelog</a>
</li>
<li><a href="./roadmap.html"><i>icon-tasks icon-white</i> Roadmap</a>
</li>
</ul>
</ul>
</nav>
<nav id="archives" class="span3">
<h1><a href="./archives.html">Archives</a></h1>
<ul>
</ul>
</nav>
<nav class="tags span3">
<h1><a href="./tags/index.html">Tags</a></h1>
<ul>
</ul>
</nav>
</div>
</div>
<div class="copyright" style="text-align: center;">
<p>
Documentation Copyright © 2007-2013 Matthew Fidler, Xah Lee and David
Capello. Published under the therm of the <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/fr/">Creative Commons Attribution-Noncommercial-Share Alike 2.0 France License</a>. Code
published under <a href="http://www.gnu.org/licenses/gpl-2.0.html">GPL v2</a>.
</p>
<p>Powered by <a href="https://github.com/renard/o-blog">o-blog</a>.</p>
</div>
</div>
</body>
</html>