I am writing python code so shifting/moving blocks of lines is important to avoid going through each line individually. How can I do this without an add-on? Is there a type of operation keystroke command to do this?
5 Answers
Use command indent-rigidly
, which is bound to C-x TAB
by default.
You can specify the number of spaces to indent by using a prefix argument, such as C-5 C-x TAB
.
Or you can invoke the command and then use the left/right arrows to interactively adjust the indent level.
-
-
2
-
great, but why does the first line not move as well? I have to grab the last part of the line above the selection to make the set of lines I want move.– VassFeb 21, 2015 at 18:52
-
1You shouldn't need to select anything from the previous line, but you do want to select from the beginning of the first line you want to indent. For example,
C-a
to move to the beginning of the line,C-SPC
to start marking the region,C-n C-n
to move down a couple lines,C-5 C-x TAB
to indent those two lines.– glucasFeb 21, 2015 at 18:56 -
1"use the left/right arrows to interactively adjust the indent level" Really? Great! I didn't know this, and sometimes I had to guess how much spaces I need to add or remove. I hope this can help. Feb 21, 2015 at 19:02
If you are used python-mode.el C-c >
or C-c <
to shift blocks left or right
-
how come the first line of the selection remains unmoved if I don't select the last part of the line above it?– VassFeb 21, 2015 at 18:50
-
I cannot reproduce this behaviour. all line of a selections are moved. Emacs 24.4– LompikFeb 21, 2015 at 18:54
-
glucas' comment says that this will happen if you don't select from the start of the line– VassFeb 21, 2015 at 21:39
The string-rectangle
command ( C-x r t
) can be used to insert any arbitrary text (spaces included) in a selected region.
Let's say you have this block of text and you want to insert 5 spaces in front of all lines.
abc
def
ghi
First select a "0 column" region as shown below (the point is on the character 'a' and the mark is in the same column in the row containing 'ghi':
▮bc
def
▯ ghi
Now using string-rectangle
, insert the text you want to insert in the selected region. In this example, we will be inserting 5 spaces on all the rows including and inbetween the point and the mark.
C-x r t M-5 SPC RET
That will give the below force indented text.
abc
def
ghi
There is C-x TAB
(bound to indent-rigidly
). Give it a prefix argument to indicate how many spaces you wish to indent by, negative removes that many spaces.
I found that by pressing Alt-4 and then SPC, I get the desired result. Not sure if this is the best way, but it works as well.