after using vim in an xterm to edit some bigger files, I often get the 
feeling of being "lost" in the file after a while, i.e. I don't feel in 
touch with my current position in the file. Of course, line numbers and 
the percentage of where I am are displayed, but still. I then recently, 
while using gvim again, realized that the reason for my weird feeling is 
that there's no scroll bar in the xterm mode. It seems that it makes a 
big difference for me psychologically to have a visual representation of 
where I am in the file, as opposed to just seeing the line 
number/percentage, which gives me the information, but in an abstract 
way. So, I was wondering if there's a way to get a scroll bar in the 
non-gui version of vim as well. Maybe it's a capability that I haven't 
found yet? It also seems feasible that this is something that an 
extension script could do. Maybe something like that exists (didn't find 
anything on the website). I'm not necessarily looking for something that 
I can drag to change position, just really a visual representation of 
where I am in the file proportionally. Does anyone know of anything like 
that?
Thanks,
Michael
AFAIK, scrollbars are set by flags of the 'guioptions' setting, which is 
only available in GUI mode (the help says "if compiled with GUI enabled" 
but I just ran a short test which showed that it doesn't work in Console 
mode, even if compiled with GUI enabled).
So, the short answer would be: No, you can't do it.
A slightly longer answer is: Since you already use xterm, which uses the 
X server, why not go one step furter and use gvim? You would then have 
all the scrollbars you would want (even vertical scrollbars on both 
sides of the only window, if that's what you want).
Best regards,
Tony.
-- 
I cannot conceive that anybody will require multiplications at the rate
of 40,000 or even 4,000 per hour ...
		-- F. H. Wales (1936)
I thought a little bit about the possibility of a "scrollbar", or a 
visual representation of a position in the file. Maybe there's a way to 
put it in the statusline. Right now, I have this as my statusline:
set statusline=%f\ [%{(&fenc==\"\"?&enc:&fenc).((exists(\"+bomb\")\ &&\ 
&bomb)?\",B\":\"\")}%M%R%H%W]\ %y\ [%l/%L,%v]\ [%p%%]
That evaluates to something like this:
.vimrc [utf-8] [vim] [41/382,23] [10%]
Now, maybe there's a way to have something more visual instead of the 
last block, which shows the percentage. What would be great if the whole 
status bar could extend over the entire available width, and show 
something like a progressbar, so that it looks like this:
.vimrc [utf-8] [vim] [41/382,23] [----o--------------------------------]
The 'o' would move proportionally with the position in the file. Just an 
idea.
Right now, I'm not sure if/how this could be implemented. The element 
would have to know it's own width, and the width of the current terminal 
window. Maybe someone has some ideas about this?
Thanks,
Michael
i use 'rul' (following) to find out how wide my window is:
#!/usr/bin/python
from sys import argv
from subprocess import Popen, PIPE
if len(argv) < 2:
    ds = int(Popen(["tput", "cols"], stdout=PIPE).communicate()[0])
else:
    ds = int(argv[1])
str = "."
lstr = len(str)
while lstr < ds:
    if (lstr + 1) % 10 == 0:
        str += (("%d") % ((lstr + 1) / 10))[-1]
    elif (lstr + 1) % 5 == 0:
        str += "+"
    else:
        str += "."
    lstr = len(str)
print "%s" % str
It's easier to take a wild guess at how much place will be there for the 
scrollbar.
Otherwise the length of the other fields have to be computed.
"-----------%<-----------------
func! STL()
  let stl = '%f [%{(&fenc==""?&enc:&fenc).((exists("+bomb") && 
&bomb)?",B":"")}%M%R%H%W] %y [%l/%L,%v] [%p%%]'
  let barWidth = &columns - 65 " <-- wild guess
  let barWidth = barWidth < 3 ? 3 : barWidth
  if line('$') > 1
    let progress = (line('.')-1) * (barWidth-1) / (line('$')-1)
  else
    let progress = barWidth/2
  endif
  " line + vcol + %
  let pad = strlen(line('$'))-strlen(line('.')) + 3 - 
strlen(virtcol('.')) + 3 - strlen(line('.')*100/line('$'))
  let bar = repeat(' ',pad).' [%1*%'.barWidth.'.'.barWidth.'('
        \.repeat('-',progress )
        \.'%2*0%1*'
        \.repeat('-',barWidth - progress - 1).'%0*%)%<]'
  return stl.bar
endfun
hi def link User1 DiffAdd
hi def link User2 DiffDelete
set stl=%!STL()
"-----------%<-----------------
-ap
Wow, this is quite amazing! Thanks so much! I have some further thoughts 
about the details...
> 
> "-----------%<-----------------
> func! STL()
>   let stl = '%f [%{(&fenc==""?&enc:&fenc).((exists("+bomb") && 
> &bomb)?",B":"")}%M%R%H%W] %y [%l/%L,%v] [%p%%]'
>   let barWidth = &columns - 65 " <-- wild guess
Maybe the guess could be less wild. The most variable thing is the 
filename, so what I did was to use the following two lines instead of 
the last one above:
   let takenwidth = len(bufname(winbufnr(winnr()))) + 40
   let barWidth = &columns - takenwidth
This already give a rather accurate result. Maybe there are even more 
parts that can be calculated? Especially the '%M%R%H%W' would be 
interesting.
>   let barWidth = barWidth < 3 ? 3 : barWidth
> 
>   if line('$') > 1
>     let progress = (line('.')-1) * (barWidth-1) / (line('$')-1)
>   else
>     let progress = barWidth/2
>   endif
> 
>   " line + vcol + %
>   let pad = strlen(line('$'))-strlen(line('.')) + 3 - 
> strlen(virtcol('.')) + 3 - strlen(line('.')*100/line('$'))
>   let bar = repeat(' ',pad).' [%1*%'.barWidth.'.'.barWidth.'('
>         \.repeat('-',progress )
>         \.'%2*0%1*'
>         \.repeat('-',barWidth - progress - 1).'%0*%)%<]'
> 
>   return stl.bar
> endfun
> 
> hi def link User1 DiffAdd
> hi def link User2 DiffDelete
This last part confuses me. Obviously, these two highlight definitions 
define the highlighting of the bar. But where do the names User1 and 
User2 come from? How does the bar know that it's using that format?
> set stl=%!STL()
> "-----------%<-----------------
Thanks,
Michael
 From special codes in the 'statusline' option value, which it gets from 
the complex "let bar = bla bla bla" above:
	%1*                use User1 from now on
	%2*                use User2 from now on
	%0*                go back to StatusLine (or StatusLineNC)
see ":help 'statusline'".
>
>> set stl=%!STL()
>> "-----------%<-----------------
>
> Thanks,
> Michael
Best regards,
Tony.
-- 
(letter from Mark to Mike, about the film's probale certificate)
       For an 'A' we would have to: Lose as may shits as possible Take Jesus
       Christ out, if possible Loose "I fart in your general direction" Lose
       "the oral sex" Lose "oh, fuck off" Lose "We make castanets out of 
your
       testicles"
                  "Monty Python and the Holy Grail" PYTHON (MONTY) 
PICTURES LTD
I got something pretty stable now. The "final results" are at
http://www.physik.fu-berlin.de/~goerz/linux.html#vim
The only thing that's still missing is the total number of lines in the 
file. Is there any way to get that number in a script?
Cheers,
Michael
:help line()