Configuring TextMate to add empty scroll-space at bottom of document view? - textmate

I've been using BBEdit for years, but I've just started using TextMate because I find it has better support for Ruby on Rails than BBEdit (please don't start a flame-war over this!).
One thing I really miss is that BBEdit can add 1/2 or 1/1 page of empty space below the document (without adding lines to the actual document). This means that I will never have to write code at the very bottom of the window/screen, but I can always scroll the page to get the current line at a comfortable hight on the screen, even if it is the last line in the document.
Now, this might seem minor, but after using TextMate for a few days, missing this feature is really starting to bug me.
On the off chance that there is a setting I missed, or that there is a plugin or something out there, I thought I'd throw the question out here. If you know of any way to replicate this behaviour in TextMate, please share!

There is now an option in TextMate 2 to scroll past the end of the document.

This might be rather a late answer but i am posting b/c this question is high in google. Looking for the same issue i found:
PageFeed
PageFeed is a TextMate plugin that allows one to scroll past the last line of a document.
Its not perfect but for most cases its all you need: https://github.com/ampt/PageFeed

I don't think I've ever witnessed a flame war involving BBEdit.
No, TextMate doesn't allow that.
You could create a macro/snippet to add a bunch of \n at the bottom of the file.
Vim, Emacs and Sublime Text all allow this and have better RoR support than BBEdit.

Lacking a scrolling margin, especially at the bottom, when searching in text, is the most frustraing thing in Notepad, Word, Excel, etc. and is enough by itself to make me hate the products on almost a daily basis. EDT, TPU, etc, were great text editors which had this feature (maybe they introduced it) and, now that I've found Emacs emulates them, I use it all the time, and text editing life is good again. I can't understand how most of the world accepts the crazy situation of using a text editor that is worse than those in vogue 20 years ago.

For those who aren't clear about the concept or benefits of a scrolling bottom margin, it is not just about adding empty space below the document, but it also lets you see the context of text found in a search. Without a scrolling margin, the cursor is almost invariably positioned at the bottom line of the screen on the item found, and then to see what comes next you have to manually scroll further down. With a scrolling margin, the cursor and found text are repositioned above the bottom of the screen by the margin amount, letting you see the found text and all the text surrounding it. With repeated searches of the same text, this is a huge timesaver.

Related

How can I set tmux vi-mode highlight color

Looking for a way to control text/cursor highlighting colors when in vi-mode in tmux. I can not seem to find many answers from googling around. I love tmux and use this feature quite a bit, and I have been living with this flaw for some time and still have not been able to find a solution. You can view my dotfiles here. Keep in mind that my master branch is my OSX setup, and I have an "arch" branch for my Arch linux setup. The issues occurs on both systems. Though the colors are slightly different, but not by much.
Here is current symptoms: (both systems) I am in a tmux session, I want to enter into vi-mode for either searching or copying some text. When copying text (hitting v while in vi-mode for visual) the highlighted text and background are both black. So I can't see the text I am highlighting. Or while searching (hit "/" while in vi-mode for searching) my background and text on the entire line where my prompt is for typing the text I want to search is all black. So I have no idea what text is actually in the search. If I mis-type something due to fat fingers and nothing returns in my search, it can be frustrating. One last symptom (which is a minor one, but would be nice to solve) When I do search, I get absolutely no highlighting over than my normal cursor. Not like my vim set up where it highlights currently found, and all other matches.
Here is what the desired fix would look like: Searches would highlight in some shade of yellow or orange on all matched text. Searching prompt to type in search text would be at least readable. Anything but Black on Black. Highlighting text while selecting what to copy in visual mode again anything readable, no Black on Black.
Other things to note: I typically have mouse-mode on in tmux to promote keyboard-driven approach and not allow any selection of text via mouse selection. But when I do toggle this feature off and can then select text via mouse, the highlighted text background is white and text is black. While readable, would still wish to know how to control this color as well. Also (not sure any vim settings actually carry over to tmux) but everything works as desired while actually in vim. Just in case vim settings here. Same note about branches.
Most of my tools are latest versions afaik. This includes Tmux 2.1. I do not have full list of versions of my tools as of right now. If this may play a part in debugging let me know and I'll reply with versions. For what its worth other tools that might be in conflict is my shell I use zsh with on-my-zsh. On my mac I am using iTerm2, on arch I'm using URxvt. Doubt any of my .Xresources matter since it also happens on OSX.
Any help is greatly appreciated. Thanks in advance.

Sublime Text 2—Quickly find something on a page

I've been trying out Sublime for the past few days. Long-time TextMate user.
The one thing I struggle with most is finding stuff in a document. I can use CMD+r to find a selector, but what if I'm looking for something else, a comment maybe, or something else?
If I use CMD+f, Sublime will put a box around all of the instances of my search term, which isn't what I want either. Worst, it keeps a box around all of the instances:
http://cl.ly/1T3x0i2L0j2u1a0E0M12.jpg
I need to "disengage" the find before I can move on.
Is there a TextMate "QuickFind" (Ctrl+s) equivalent in Sublime Text?
I find searching/navigating through a document in Sublime to be really, really frustrating.
After looking for a very long time, I've found it. The Sublime equivalent to Textmate's quick search/find is Find > Incremental Find, or cmd+i.
Now, I'm officially a Sublime convert.
Worst, it keeps a box around all of the instances (see screenshot: http://cl.ly/1T3x0i2L0j2u1a0E0M12). I need to "disengage" the find before I can move on.
To disengage find in sublime text 2 just press Esc key.
On top of using Find as per usual, if a find is for a small amount of characters that would appear 50 times on a page, use the EasyMotion plugin which does that old Vim deal:
You hit the EasyMotion key, hit the character you want to match, then Sublime replaces all visible instances of that character with a letter, number, etc - you then hit that replacement character on your keyboard and the cursor moves to that particular instance of the character you wanted. It's a bit confusing to explain but basically, it lets you teleport to absolutely arbitrary points on any page in 3 key presses.

In Xcode4, can you change the characters used to display invisibles?

I much prefer Visual Studio's way of displaying invisibles... a simple dot for spaces, and an arrow for tabs. When you change the color to be a light-light-gray, they provide excellent help when viewing code alignment and such but they're barely noticeable so you can leave them turned on all the time without really getting in the way.
Xcode4 however (and maybe other versions as well) instead display some truncated-'U' shape for a space and don't appear to show anything for a tab, Worse, as I mentioned in another post, Xcode doesn't respect its own setting for invisibles color.
Still, this question is about changing the default character used. I don't care if it's a hack of a plist file or even digging around in the contents of Xcode's app bundle (knowing any updates would revert it if it was) but as they are now, they're just too unusable because of how much they obstruct whitespace and thus skimming of code. (VS really nailed that.)
The only way (I could figure out) to do it is to find the symbol that it uses (note they change along with font) open the font in a font editor and copy paste the glyph you want to the one in spot occupied by the character you want to change. There are a few free editors and some really expensive ones I was able to use ttfedit http://mac.softpedia.com/get/Utilities/TTFEdit.shtml to find and change the character XCode used for spaces on one of the more silly fonts I have to make sure it worked before I answered. Saved font to desktop, double clicked and installed it, osx complains that it is duplicate font, say resolve differences and pick your new file and say resolve to turn off the old font. Next time you open xcode you should see your new symbol for space.
Probably another way to do this, but may be the only way without getting deep into XCode source to find where it makes decision for symbol to use (note many use white diamond but helvetica for instance uses a kinda floor bracket thing, you may see the pattern but I didn't).

What's the point of viEmu plugin for Visual Studio?

This may sound a bit provocative but it actually is a real question. Feel free to edit if you don't like the tone.
Now, as much as I understand vi from my short experience with it like 10 years ago, it's a primitive text editor with one editable line at the bottom of the screen created before the scrollbars were invented, with some crazy shortcuts to overcome this limitation.
Can somebody explain me how one can be more productive with it than with, say normal VS.NET editor? Moreover, why would anybody want to use viEmu which supposedly turns your VS.NET into an ancient vi?
I'm willing to give it a try but I need some motivation to overcome the learning curve.
It honestly sounds like you have never seen someone use Vi who is truly proficient in it. When you normally use Visual Studio you frequently will move your hand over to your mouse, click through options, dialogs, classes, etc.
With ViEmu your hand never leaves the keyboard. You are compiling, switching files, highlighting groups of text, fixing indentation, performing complex motions on your code and running regular expression searches in seconds. For people who are fast typists it allows you to achieve a speed for tasks you would not be able to otherwise.
Many people will counter this by saying things like, "Most of my development time is spent thinking. The extra speed I gain from using tools like these is negligible.".
That is a non-argument in my opinion. It is true, for most large programming tasks you spend far more time planning and thinking then you do actually slinging code. But that doesn't mean that being able to express yourself through your IDE 2x faster doesn't have an impact on your productivity as a programmer.
The viEmu page itself has a pretty good article that might help to answer your question: Why, oh WHY, do those #?#! nutheads use vi?
I've spent the last couple months trying to teach myself to use vim "properly" and now I can hardly stand using other editors because they seem underpowered and clunky. For a random example, imagine you have a line of code that looks like this:
$welcomeMessage = "Welcome to SiteName!"; // shows at the top of homepage
In a normal editor, how would you change the string? You'd probably have to reach over and grab your mouse and carefully select it, or you'd move your cursor inside the first quotation mark, and hold down Shift and the right-arrow until you got to the closing quotation mark.
In vim, with my cursor anywhere in-between the quotes, I type ci" and it erases everything inside the quotation marks and puts me into insert-mode so I can type the new value I want. My hands didn't even have to move from my normal typing position.
There are so many things like this, I think you really have to spend a while using the editor to understand how powerful it is. It's very slow and hard to use at first, that's why a lot of people try it for a short time and think "this is dumb, everything is way harder", but after a while you start thinking in terms of the motions, it all starts to become automatic and it's much, much faster than using a "normal" editor. As I said, I can't go back now.
I've also had trouble understanding why people choose vim as their editor, even though I was using it from time to time, until I've finally "got it". I think most explanations of "why?" fails, because they fail to show couple crucial points. To explain those points, first you need to understand that in vim you are manipulating text primarily being in command mode. Ie by default your key presses are commands, and do not usually insert any text, unless those commands (like append, insert, change) switch to insert mode. This lets you navigate and edit your text easily without ever touching your mouse or moving your hands away from "editing pose".
Now the crucial points are:
Vim commands are divided into nouns, verbs and modifiers.
Editing is performed by combining them.
And this is what gives vim the power. To ilustrate the point, here are some most used commands:
Nouns: word, sentence, block, quotes and braces.
Verbs: cchange, insert, visual, delete
Modifiers: inside, around, till
And to ilustrate how you can mix them:
Want to change a word? cw
Same, but cursor in the middle of the word? caw
Change text inside quotes? ci", also change quotes? ca"
Delete function body? di{
Delete up till first comma? dt,
Delete up till second comma? d2t,
Jump to first comma? t,
Select word? viw
Also notice how all commands nicely translate into natural language:
delete word
change inside {
In vim if you learn a new verb, noun or modifier, you can easily mix and match with what you already know. So basically learning just one thing, you learn how to do a lot of different things.
Another great thing is that vim remembers what commands you have used, and you can repeat the sequence just by pressing .. For this post I've had to surround a lot of letters with <kbd> tag. But I've did that only once, and then just went over each letter and pressed ..
And that's basically the thing you "need to get" to understand the power of vim and become advanced user overnight.
P.S. if you don't like vim because it's console based and want a modern text editor, then I suggest looking into Sublime Text editor, which is a great editor and also supports vim mode.
P.S.2. I also recommend to map Esc key to jj and kk, which makes things a lot easier.
You are wrong about "one editable line at the bottom of the screen." All the text in the window is editable. And it does scroll (all versions) and in the case of gvim, has scrollbars.
Maybe you inadvertently put it in "ex mode". This is easily done and can be confusing.
Another answer got me thinking that watching some skilled editing using vim would be pretty revealing so I dug up this video showing basic and more advance motions while coding. This person could get even a bit efficient using some marks, etc but it gives an idea.
http://www.youtube.com/watch?v=FcpQ7koECgk&feature=related
If you need inspiration or want to see someone who really knows what they are doing with Vim, check out Gary Bernhardt's String Calculator Kata In Python, look at him go! http://vimeo.com/8569257
I think they have a long and acceptable answer for your question on the viEmu hompage:
One other even more powerful example: let's take the 'ce' command, which is composed of 'c' and 'e'. The 'c'hange command deletes the range specified by the next motion command, and also enters insert mode. It's the same as 'd', but with the distinction that it enters insert mode, instead of staying in normal mode. The boon is that the text you type in the next (short) input session is also part of the command. So if you do 'ceHello>', what you do is replace from the cursor to the end of the word by 'Hello', and the '.' command afterwards will work exactly like that: replace up to the end of the word with 'Hello'.
From:
http://www.viemu.com/a-why-vi-vim.html
I have viEmu installed ~half year ago. But I have to say (maybe without strong linux experiences) I've never used it. Too alien, too far, too complex.
So IMHO viEmu it's a great technical&historical challenge but no more for the 95% of the developers.
Basically with Vi (or ViM) you get faster because you don't need to touch the mouse and the key-map is improved (this represent learning curve cost but worth the effort) for do any text manipulation in a very easy way once that the fundamentals are learned.
Top 10 things Vi user need to know about Vim
I have not experience with VS.Net but I guess it has the same features that any other IDE has.
I have found that learning the all the key commands of the editor in my IDE was a sufficient replacement for Vi. Things like renaming, indenting, formatting, moving lines and that kind of stuff.
So I guess the major win would be for someone who already know Vi to be productive without having to learn VS.Net.
But then again, Vi has some truly esoteric but powerful features that probably can't be matched by you standard IDE editor.
I think you really should give Vim a try.
If you quickly tried Vi ten years ago, I may understand you didn't appreciate it. It's not really user-friendly at first sight. Actually its real power is revealed when you start feeling comfortable with the movements and start making it your own with customisation.
Once Vim is familiar to you you may understand why it deserves to be learnt.
I actually use VS only for debugging these days. Coding with vim (real vim, not viemu) is just a better experience.
Now, I am not going to claim that using one over another makes any difference in productivity - after all I spend most of my time trying to figure out how to solve a problem - entering the code is the easy part.

Loads of extra space at bottom of classes in Visual Studio 2008 C# Express

The scrollbar scrolls way past the end of my class. Is there any way to adjust this? Is it just the VS convention? I can't delete the space, so it isn't carriage returns.
The reason I don't like this is that I keep accidentally scrolling past the end of my class!
I'd especially like to hear from people who actually have Visual Studio 2008 installed ;)
Either you have extra newlines (the cr/lfs Jim Anderson was talking about) in which case you can just select all the blank lines and hit delete to get rid of the extra space. The other possibility is that what you think is blank space is just the IDE letting you scroll down one page past the end of the file (until the last line of the file is at the very top of the screen). This is to let you scroll to the bottom of the file and start typing without causing the screen to scroll every time you start a new line.
Edit:
A quick glance at the other editors on my computer shows that this sort of thing is common - CodeWright will let you keep scrolling down as far as you want (pages and pages past the end of text) - although it does show the scroll bar as being all the way to the bottom when the bottom of the file is in the middle of the screen of text.
Even basic tools like Query Analyzer have this.
This is a feature (no, not a bug relabeled a "feature").
Reboot? No seriously, more information is needed.
I am guessing you have CR/LFs you you need to delete.

Resources