Vim: reverse visual mode perspective - vim

Let's say you're using vim to select in visual mode. You hit v, then start moving to the right with l. Then, let's say you wish to extend your selection to the left, without changing the point at the right. That is, you're satisfied with '> but want to change '<.
How do you swap so that it is as if you started at '> and are selecting to the left, changing '<?
I have a vague recollection that I've seen this before, but it's hard to google for.

Oops, amazing how posting to stackoverflow can make reading the (F) manual that much easier...
3. Changing the Visual area *visual-change*
*v_o*
o Go to Other end of highlighted text: The current
cursor position becomes the start of the highlighted
text and the cursor is moved to the other end of the
highlighted text. The highlighted area remains the
same.

o
From the documentation:
o Go to Other end of highlighted text: The current
cursor position becomes the start of the highlighted
text and the cursor is moved to the other end of the
highlighted text. The highlighted area remains the
same.

Related

Select entire text from current line in Linux using a keyboard shortcut

I've been using Ubuntu/VS Code for a week and I've been struggling with text selection.
In my mac if I want to select text starting from a position until the end of the text I can easily do that with Command + Shift + arrow, but I just can't figure out how to do the same in Linux (Ubuntu), CTRL + Shift only works selecting word by word, and sometimes we just want to select an entire row or the entire text from the current position.
Appreciate the help
Put your courser on the point you want to start. Press Shift+End for the end of the line.
If you want to copy the whole line from first to last simply place the cursor somewhere in that line and hit CTRL+C.
Press Home key to get to the start of the line.
For Selecting multiple lines, use Up/Down key.
The best way is, Put your courser on the point you want to start. Press Shift then click the point you want to end using mouse/touchpad.
I tried the CTRL-C suggestion above without any result. (Mint 19.3 Cinnamon)
Accidentally, I found found that the left mouse button, triple-clicked, selects (highlights) the entire row the cursor is in. [Not seen that documented!] I suppose an expert on xdotools might write you a script for that.
Or position the cursor at the starting point and enter
Ctrl+Shift+End (or repeated right arrow) for a document,
Shift+End (or repeated right arrow) for a single line.

Highlighting Text With Keyboard Between Limits On Sublime Text

In Sublime Text I can highlight text between specific locations by holding down shift and clicking the start of the region I want highlighted and then the end.
How do I do this with just the keyboard?
Method 1
Explore the commands in the Edit > Mark submenu.
Move your cursor to the start of the desired selection and run Set Mark (Ctrl+K, Ctrl+space).
Then move your cursor to the end of the desired selection and run Select to Mark (Ctrl+K, Ctrl+A).
Method 2
Or, as noted in the comments, hold down Shift as you move across the desired selection (using arrows, etc.).
Try the key command Ctrl+Shift+End on Windows when you are at the beginning or in the middle somewhere of a document. This works with any program.

How to hold the highlighted section for sometime in VIM editor

I am right now analyzing some code using VI editor. In my use case, I have selected code spanning 2 Pages by using ESC SHIFT v & selecting all the lines (Spanning 2 Pages). Now the issue I have is I am not able to hold the highlight until I need. As soon as I press ESC and move the cursor the highlight goes off.
How do I hold the highlight until my need
If you just want to reselect whatever you previously selected when you leave visual mode you can use gv. You can't keep highlight when leaving a visual mode, though.
Edit:
If you just need to view selected text and you don't want to be distracted by surrounding text, you can simply copy it to an empty buffer. To do so select your text in visual mode, press y then :new then P. When you finish you can close newly created buffer with :bd!.

vim: Change the behavior of visual block mode to force highlighting of columns

I am new to vim and this was difficult for me to google because I am not sure how to articulate what I want to do.
Using this screenshot as a reference:
I want to highlight the following block of text:
Is there a way to force vim to highlight an arbitrary block of text like this?
I can highlight text in the square from line 8 to line 11, but when I move down to the closing bracket it just highlights a single column.
From here:
If I move down one row it only selects the text in the first screenshot.
You can use -- VISUAL BLOCK -- mode (by default you enter this mode with Ctrl+v). Start on the column you want to start on. Enter the mode and move to end of the longest line (with $ if you wish). This will highlight the entire line for other blocks as you continue to move up.

How to delete selected text in the vi editor

I am using PuTTY and the vi editor. If I select five lines using my mouse and I want to delete those lines, how can I do that?
Also, how can I select the lines using my keyboard as I can in Windows where I press Shift and move the arrows to select the text? How can I do that in vi?
I am using PuTTY and the vi editor. If I select five lines using my mouse and I want to delete those lines, how can I do that?
Forget the mouse. To remove 5 lines, either:
Go to the first line and type d5d (dd deletes one line, d5d deletes 5 lines) ~or~
Type Shift-v to enter linewise selection mode, then move the cursor down using j (yes, use h, j, k and l to move left, down, up, right respectively, that's much more efficient than using the arrows) and type d to delete the selection.
Also, how can I select the lines using my keyboard as I can in Windows where I press Shift and move the arrows to select the text? How can I do that in vi?
As I said, either use Shift-v to enter linewise selection mode or v to enter characterwise selection mode or Ctrl-v to enter blockwise selection mode. Then move with h, j, k and l.
I suggest spending some time with the Vim Tutor (run vimtutor) to get more familiar with Vim in a very didactic way.
See also
This answer to What is your most productive shortcut with Vim? (one of my favorite answers on SO).
Efficient Editing With vim
Do it the vi way.
To delete 5 lines press: 5dd ( 5 delete )
To select ( actually copy them to the clipboard ) you type: 10yy
It is a bit hard to grasp, but very handy to learn when using those remote terminals
Be aware of the learning curves for some editors:
(source: calver at unix.rulez.org)
If you want to delete using line numbers you can use:
:startingline, last line d
Example:
:7,20 d
This example will delete line 7 to 20.
Highlighting with your mouse only highlights characters on the terminal. VI doesn't really get this information, so you have to highlight differently.
Press 'v' to enter a select mode, and use arrow keys to move that around. To delete, press x.
To select lines at a time, press shift+v.
To select blocks, try ctrl+v. That's good for, say, inserting lots of comment lines in front of your code :).
I'm OK with VI, but it took me a while to improve. My work mates recommended me this cheat sheet. I keep a printout on the wall for those odd moments when I forget something.
Happy hacking!
When using a terminal like PuTTY, usually mouse clicks and selections are not transmitted to the remote system. So, vi has no idea that you just selected some text. (There are exceptions to this, but in general mouse actions aren't transmitted.)
To delete multiple lines in vi, use something like 5dd to delete 5 lines.
If you're not using Vim, I would strongly recommend doing so. You can use visual selection, where you press V to start a visual block, move the cursor to the other end, and press d to delete (or any other editing command, such as y to copy).
If you want to remove all lines in a file from your current line number, use dG, it will delete all lines (shift g) mean end of file

Resources