How to swap strings in all lines?
Emacs 26.1
I have this text:
"ADA-SGD"
"ADT-SGD"
"ADX-SGD"
"AID-SGD"
"AMP-SGD"
"ANT-SGD"
"ARDR-SGD"
"ARK-SGD"
I want to swap text in all these lines. The result must be like this:
"SGD-ADA"
"SGD-ADT"
"SGD-ADX"
"SGD-AID"
"SGD-AMP"
"SGD-ANT"
"SGD-ARDR"
"SGD-ARK"
How I can do this?
Thanks.
text-editing
add a comment |
Emacs 26.1
I have this text:
"ADA-SGD"
"ADT-SGD"
"ADX-SGD"
"AID-SGD"
"AMP-SGD"
"ANT-SGD"
"ARDR-SGD"
"ARK-SGD"
I want to swap text in all these lines. The result must be like this:
"SGD-ADA"
"SGD-ADT"
"SGD-ADX"
"SGD-AID"
"SGD-AMP"
"SGD-ANT"
"SGD-ARDR"
"SGD-ARK"
How I can do this?
Thanks.
text-editing
add a comment |
Emacs 26.1
I have this text:
"ADA-SGD"
"ADT-SGD"
"ADX-SGD"
"AID-SGD"
"AMP-SGD"
"ANT-SGD"
"ARDR-SGD"
"ARK-SGD"
I want to swap text in all these lines. The result must be like this:
"SGD-ADA"
"SGD-ADT"
"SGD-ADX"
"SGD-AID"
"SGD-AMP"
"SGD-ANT"
"SGD-ARDR"
"SGD-ARK"
How I can do this?
Thanks.
text-editing
Emacs 26.1
I have this text:
"ADA-SGD"
"ADT-SGD"
"ADX-SGD"
"AID-SGD"
"AMP-SGD"
"ANT-SGD"
"ARDR-SGD"
"ARK-SGD"
I want to swap text in all these lines. The result must be like this:
"SGD-ADA"
"SGD-ADT"
"SGD-ADX"
"SGD-AID"
"SGD-AMP"
"SGD-ANT"
"SGD-ARDR"
"SGD-ARK"
How I can do this?
Thanks.
text-editing
text-editing
edited Jan 9 at 22:41
Heikki
1,590516
1,590516
asked Jan 9 at 12:06
AlexeiAlexei
639211
639211
add a comment |
add a comment |
5 Answers
5
active
oldest
votes
Another option: using Multiple Cursors you can do it with three commands!
Starting with point (the cursor) on the first hyphen -
:
- Mark the hyphen with Shift right-arrow or C-space C-f
- Mark all hyphens with
M-x mc/mark-all-like-this
or C-c C-<
- Transpose words with
M-x transpose-words
or M-t
add a comment |
You can do it with C-M-%
(running query-replace-regexp
): Give it the string "([A-Z]+)-([A-Z]+)"
(quotes included) for the text to replace, and "2-1"
for the replacement.
add a comment |
I personally think the query-replace-regexp
solution is better, but just for fun here is another solution with macros:
;; Move cursor to start of first line
<f3> ;; kmacro-start-macro-or-insert-counter
M-f ;; forward-word
M-t ;; transpose-words
C-n ;; next-line
C-a ;; move-beginning-of-line
<f4> ;; kmacro-end-or-call-macro
;; Select remaining lines
C-x C-k r ;; apply-macro-to-region-lines
Executing your macro with numeric argument 0 should also work as intended, as going past the last line in a buffer errors out and terminates execution.
– DoMiNeLa10♦
Jan 11 at 21:26
add a comment |
You can simply use query-replace-regexp (default key C-M-%) for this.
search pattern would be something like
"(.*)-(SGD)"
and the replacement would look like this then
"2-1"
replace-regexp is great for such things, check the emacs wiki for mor information about that
emacs regexp
add a comment |
Regexps are an overkill in this case since emacs has a built-in command transpose-words
that is bound to M-t
by default. This command, combined with isearch are enough to solve the problem when linked together with emacs keyboard macros.
https://www.gnu.org/software/emacs/manual/html_node/emacs/Basic-Keyboard-Macro.html
Learn to use keyboard macros and you can solve most repetative text editing tasks.
Place the cursor before the first line, start recording the keyboard macro, press C-s
and -
to move the cursor to the next hyphen, press M-t
to transpose the words, stop recording. Then repeat the macro as many times as needed. Alternatively, you can apply the macro to a region of lines.
See also @0x5453's answer, which likewise usedtranspose-words
in a keyboard macro.
– phils
Jan 9 at 21:02
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "583"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2femacs.stackexchange.com%2fquestions%2f47005%2fhow-to-swap-strings-in-all-lines%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
5 Answers
5
active
oldest
votes
5 Answers
5
active
oldest
votes
active
oldest
votes
active
oldest
votes
Another option: using Multiple Cursors you can do it with three commands!
Starting with point (the cursor) on the first hyphen -
:
- Mark the hyphen with Shift right-arrow or C-space C-f
- Mark all hyphens with
M-x mc/mark-all-like-this
or C-c C-<
- Transpose words with
M-x transpose-words
or M-t
add a comment |
Another option: using Multiple Cursors you can do it with three commands!
Starting with point (the cursor) on the first hyphen -
:
- Mark the hyphen with Shift right-arrow or C-space C-f
- Mark all hyphens with
M-x mc/mark-all-like-this
or C-c C-<
- Transpose words with
M-x transpose-words
or M-t
add a comment |
Another option: using Multiple Cursors you can do it with three commands!
Starting with point (the cursor) on the first hyphen -
:
- Mark the hyphen with Shift right-arrow or C-space C-f
- Mark all hyphens with
M-x mc/mark-all-like-this
or C-c C-<
- Transpose words with
M-x transpose-words
or M-t
Another option: using Multiple Cursors you can do it with three commands!
Starting with point (the cursor) on the first hyphen -
:
- Mark the hyphen with Shift right-arrow or C-space C-f
- Mark all hyphens with
M-x mc/mark-all-like-this
or C-c C-<
- Transpose words with
M-x transpose-words
or M-t
answered Jan 9 at 23:20
TylerTyler
11.6k12150
11.6k12150
add a comment |
add a comment |
You can do it with C-M-%
(running query-replace-regexp
): Give it the string "([A-Z]+)-([A-Z]+)"
(quotes included) for the text to replace, and "2-1"
for the replacement.
add a comment |
You can do it with C-M-%
(running query-replace-regexp
): Give it the string "([A-Z]+)-([A-Z]+)"
(quotes included) for the text to replace, and "2-1"
for the replacement.
add a comment |
You can do it with C-M-%
(running query-replace-regexp
): Give it the string "([A-Z]+)-([A-Z]+)"
(quotes included) for the text to replace, and "2-1"
for the replacement.
You can do it with C-M-%
(running query-replace-regexp
): Give it the string "([A-Z]+)-([A-Z]+)"
(quotes included) for the text to replace, and "2-1"
for the replacement.
answered Jan 9 at 12:36
Harald Hanche-OlsenHarald Hanche-Olsen
1,816610
1,816610
add a comment |
add a comment |
I personally think the query-replace-regexp
solution is better, but just for fun here is another solution with macros:
;; Move cursor to start of first line
<f3> ;; kmacro-start-macro-or-insert-counter
M-f ;; forward-word
M-t ;; transpose-words
C-n ;; next-line
C-a ;; move-beginning-of-line
<f4> ;; kmacro-end-or-call-macro
;; Select remaining lines
C-x C-k r ;; apply-macro-to-region-lines
Executing your macro with numeric argument 0 should also work as intended, as going past the last line in a buffer errors out and terminates execution.
– DoMiNeLa10♦
Jan 11 at 21:26
add a comment |
I personally think the query-replace-regexp
solution is better, but just for fun here is another solution with macros:
;; Move cursor to start of first line
<f3> ;; kmacro-start-macro-or-insert-counter
M-f ;; forward-word
M-t ;; transpose-words
C-n ;; next-line
C-a ;; move-beginning-of-line
<f4> ;; kmacro-end-or-call-macro
;; Select remaining lines
C-x C-k r ;; apply-macro-to-region-lines
Executing your macro with numeric argument 0 should also work as intended, as going past the last line in a buffer errors out and terminates execution.
– DoMiNeLa10♦
Jan 11 at 21:26
add a comment |
I personally think the query-replace-regexp
solution is better, but just for fun here is another solution with macros:
;; Move cursor to start of first line
<f3> ;; kmacro-start-macro-or-insert-counter
M-f ;; forward-word
M-t ;; transpose-words
C-n ;; next-line
C-a ;; move-beginning-of-line
<f4> ;; kmacro-end-or-call-macro
;; Select remaining lines
C-x C-k r ;; apply-macro-to-region-lines
I personally think the query-replace-regexp
solution is better, but just for fun here is another solution with macros:
;; Move cursor to start of first line
<f3> ;; kmacro-start-macro-or-insert-counter
M-f ;; forward-word
M-t ;; transpose-words
C-n ;; next-line
C-a ;; move-beginning-of-line
<f4> ;; kmacro-end-or-call-macro
;; Select remaining lines
C-x C-k r ;; apply-macro-to-region-lines
answered Jan 9 at 19:22
0x54530x5453
1563
1563
Executing your macro with numeric argument 0 should also work as intended, as going past the last line in a buffer errors out and terminates execution.
– DoMiNeLa10♦
Jan 11 at 21:26
add a comment |
Executing your macro with numeric argument 0 should also work as intended, as going past the last line in a buffer errors out and terminates execution.
– DoMiNeLa10♦
Jan 11 at 21:26
Executing your macro with numeric argument 0 should also work as intended, as going past the last line in a buffer errors out and terminates execution.
– DoMiNeLa10♦
Jan 11 at 21:26
Executing your macro with numeric argument 0 should also work as intended, as going past the last line in a buffer errors out and terminates execution.
– DoMiNeLa10♦
Jan 11 at 21:26
add a comment |
You can simply use query-replace-regexp (default key C-M-%) for this.
search pattern would be something like
"(.*)-(SGD)"
and the replacement would look like this then
"2-1"
replace-regexp is great for such things, check the emacs wiki for mor information about that
emacs regexp
add a comment |
You can simply use query-replace-regexp (default key C-M-%) for this.
search pattern would be something like
"(.*)-(SGD)"
and the replacement would look like this then
"2-1"
replace-regexp is great for such things, check the emacs wiki for mor information about that
emacs regexp
add a comment |
You can simply use query-replace-regexp (default key C-M-%) for this.
search pattern would be something like
"(.*)-(SGD)"
and the replacement would look like this then
"2-1"
replace-regexp is great for such things, check the emacs wiki for mor information about that
emacs regexp
You can simply use query-replace-regexp (default key C-M-%) for this.
search pattern would be something like
"(.*)-(SGD)"
and the replacement would look like this then
"2-1"
replace-regexp is great for such things, check the emacs wiki for mor information about that
emacs regexp
answered Jan 9 at 12:35
AltruisticDelayAltruisticDelay
311
311
add a comment |
add a comment |
Regexps are an overkill in this case since emacs has a built-in command transpose-words
that is bound to M-t
by default. This command, combined with isearch are enough to solve the problem when linked together with emacs keyboard macros.
https://www.gnu.org/software/emacs/manual/html_node/emacs/Basic-Keyboard-Macro.html
Learn to use keyboard macros and you can solve most repetative text editing tasks.
Place the cursor before the first line, start recording the keyboard macro, press C-s
and -
to move the cursor to the next hyphen, press M-t
to transpose the words, stop recording. Then repeat the macro as many times as needed. Alternatively, you can apply the macro to a region of lines.
See also @0x5453's answer, which likewise usedtranspose-words
in a keyboard macro.
– phils
Jan 9 at 21:02
add a comment |
Regexps are an overkill in this case since emacs has a built-in command transpose-words
that is bound to M-t
by default. This command, combined with isearch are enough to solve the problem when linked together with emacs keyboard macros.
https://www.gnu.org/software/emacs/manual/html_node/emacs/Basic-Keyboard-Macro.html
Learn to use keyboard macros and you can solve most repetative text editing tasks.
Place the cursor before the first line, start recording the keyboard macro, press C-s
and -
to move the cursor to the next hyphen, press M-t
to transpose the words, stop recording. Then repeat the macro as many times as needed. Alternatively, you can apply the macro to a region of lines.
See also @0x5453's answer, which likewise usedtranspose-words
in a keyboard macro.
– phils
Jan 9 at 21:02
add a comment |
Regexps are an overkill in this case since emacs has a built-in command transpose-words
that is bound to M-t
by default. This command, combined with isearch are enough to solve the problem when linked together with emacs keyboard macros.
https://www.gnu.org/software/emacs/manual/html_node/emacs/Basic-Keyboard-Macro.html
Learn to use keyboard macros and you can solve most repetative text editing tasks.
Place the cursor before the first line, start recording the keyboard macro, press C-s
and -
to move the cursor to the next hyphen, press M-t
to transpose the words, stop recording. Then repeat the macro as many times as needed. Alternatively, you can apply the macro to a region of lines.
Regexps are an overkill in this case since emacs has a built-in command transpose-words
that is bound to M-t
by default. This command, combined with isearch are enough to solve the problem when linked together with emacs keyboard macros.
https://www.gnu.org/software/emacs/manual/html_node/emacs/Basic-Keyboard-Macro.html
Learn to use keyboard macros and you can solve most repetative text editing tasks.
Place the cursor before the first line, start recording the keyboard macro, press C-s
and -
to move the cursor to the next hyphen, press M-t
to transpose the words, stop recording. Then repeat the macro as many times as needed. Alternatively, you can apply the macro to a region of lines.
answered Jan 9 at 20:17
HeikkiHeikki
1,590516
1,590516
See also @0x5453's answer, which likewise usedtranspose-words
in a keyboard macro.
– phils
Jan 9 at 21:02
add a comment |
See also @0x5453's answer, which likewise usedtranspose-words
in a keyboard macro.
– phils
Jan 9 at 21:02
See also @0x5453's answer, which likewise used
transpose-words
in a keyboard macro.– phils
Jan 9 at 21:02
See also @0x5453's answer, which likewise used
transpose-words
in a keyboard macro.– phils
Jan 9 at 21:02
add a comment |
Thanks for contributing an answer to Emacs Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2femacs.stackexchange.com%2fquestions%2f47005%2fhow-to-swap-strings-in-all-lines%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown