Hello all.
I am really thankful to quite a few on this forum who have helped me get even more comfortable with some critical aspects of desktop navigation.
Now I need guidance on accessing and navigating output on a terminal.
I have to do a lot of work in Python and node.js and several times access a remote server through shell.
I also use git to push and pull source code and some tiems issue commit or similar commands like log.
But I am not able to consistently read the terminal.
When I use VO + arrows it some time reads the output but some times it just says full screen or tab bar and never reads the output.
I am also wondering why some times voice over automatically reads out everthing and sometimes nothing at all.
So can some one give me a complete set of instructions on how to read copy and paste from terminal?
I have to seldum read by character or words also.
Thank you in advance.
By kk_macker, 9 May, 2025
Forum
macOS and Mac Apps
Comments
Reading from terminal
Unfortunately the Terminal experience on macOS is quite bad, and has been this way since at least when I went blind, which was over 11 years ago, however it's still possible to use and aside from TextMate and Xcode, Terminal is likely the application I spend the most time on.
To use the VoiceOver cursor in terminal, the first thing you need to do is focus the scroll area followed by focusing the shell view, then you can navigate text using VO+Arrows as usual. To get to the end of the output, press VO+Fn+Right, or just VO+End on a full-size desktop Magic Keyboard. To select text in Terminal, position the VO cursor on the first character or word that you wish to select, press VO+Enter, then move the text cursor to make the selection, which should result in an audio feedback indicating that you're dragging something, and finally press VO+Enter again to stop selecting. To copy the selected text press Command+C normally. An alternative to copying command output to the system clipboard is by just piping it to the
pbcopy
command-line tool, with thepbpaste
command outputting whatever is on the clipboard.As for why sometimes you hear output and sometimes you don't, this is related to Apple's accessibility implementation in Terminal itself. From what I gather what they do is to speak any text changes that happen within a relatively short amount of time, with the VO cursor ending up wherever Apple's algorithm assumes the output has ended, which is often a wrong assumption as it gets tricked when the same text repeats more than once in the buffer.
Can you explain me more abut the VO cursor?
So Can you give me exact keyboard steps to achieve consistent reading?
I generally do a shift + VO + down arrow and then attempt the reading which works fine most of the time.
But some times I forget the first step and then I am never able to read anything for that session.
So what you are suggesting seems to be a bit different than what I am doing, hence I am asking for exact keyboard commands.
Thank you.
Keyboard Commands
OK, so for starters, VO stands either for CapsLock, Control+Option, or nothing, with the last one being possible if the VO modifier lock is on.
When you open terminal you'll likely end up focusing the tab bar or the scroll area. The tab bar doesn't matter much, so you must always make sure that the cursor is placed at the scroll area. Interacting with the scroll area using VO+Shift+Down, or 9 on the keypad if your keyboard has one, should get a view named shell focused, and interacting with that view using the same key combination should focus the text inside the view, which you can navigate using VO+Arrows, as well as use other VO commands to read the output, with VO+L being particularly useful since it reads the currently selected visible line. Other than that, and as I mentioned earlier, you generally want to position the VO cursor at the very end of the output, which is where the command-prompt usually is, by pressing VO+Fn+Right or VO+End on a full-size keyboard, and to read output you can pipe it to TextMate through its
mate
utility that can be installed from its Preferences pane.For git, the GitHub command-line interface, and any other commands that use a pager, I just set the
PAGER
environment variable to a script that I made to get rid of all the control characters not accepted by a dumb terminal as well as ANSI text-formatting control sequences, piping the result to TextMate through the aforementionedmate
command. Setting theEDITOR
environment variable tomate -w
is also useful to edit git commits and the markdown files required by many other GitHub command-line interface features.Beyond the above there isn't much else you really need to do, just accept that VoiceOver is crap and deal with that. I do all kinds of development ranging from bare metal to web like this and it works for me, so I suppose you can make it work for you as well.
To elaborate on what João…
To elaborate on what João just said, I also come from Windows and it took me a while to get use to the the terminal experience on the mac. It's definitely doable and I too use it a lot, just it's way more polished and consistant on windows and linux. Don't expect to be able to use VIM properly depending on your hardware (https://www.applevis.com/forum/macos-mac-apps/how-can-you-even-use-terminal-daily-macos-voiceover-major-bugs-vim) The CPU does really make a difference and I was recently able to tried an m4 pro and VO is more consistant in reading than my m2 pro.
Expect VO to be useful to you automatically only 10% of the time, IE reading the proper output on time and not repeating or being lost 30 lines above or below. Most of the time, you really want to brows the output yourself. As João said, vo+l is really useful, in ncursus (or whatever the name is for these things) interfaces to know which line the keyboard cursor is on, like in dpkg --reconfigure when a package installation has crashed, raspi/dietpi-config (with ssh), etc. For these specific examples you can also add vo+w, to read the current word, and vo+c for the current character.
From my experience, cot editor and vb edit also offers, as far as I know, the same output piping feature than textkmate, I have all of them installed when I was trying everything out.
For copy paste, depending on where you are coming from, you might find this to be the best feature of VO on mac (and I have 10+ years of experience with NVDA on windows so...). Once you are at the lowest level of interaction, shell, text, and are able to use vo + arrow keys, vo + home/end or vo + shift + home / end to navigate anywhere in the text, you want to do the following:
With vo + arrows, go to the first line you want to be included in the copied text. Unlike windows and probably linux as well, VO works in such a way that the cursor is always at the last character on the line. So if you hear
This is a text
when pressing vo up or down arrow, when pressing vo shift left arrow the cursor will be between t and x of text, while on windows the more or less equivalent steps with NVDA would have put the cursor before the letter h of the word This. From here if you want to select a specific word or middle of a word you can use vo left/right arrow to move by word and vo shift left/right arrow for characters.
Then, you wanna press vo+enter. VO will announce something like selection or selected, and you will probably hear a swewsh sound as the selection will be moving on with the cursor from that point.
Move to the last character, word or line you want to be included in your coppied text, everything from above applies there in the same way. Make sure to not press by accident arrow keys alone without the VO modifier, as it will exit selection mode and you will have to start over.
Once you are satisfied with your selection, press vo+enter to mark the end of your selection. You can now use the standard command command + c to copy that in the clipboard (or pasteboard as per the apple documentation?) and do whatever you want with it.
As an additional non-voiceover tip, you can use pbcopy and pbpaste from within the terminal to tinker with the clipboard in CLI, very very handy sometimes.
HTH