|
Grex > Jelly > #74: The Great Text-Editor Holy War Item. | |
|
| Author |
Message |
| 25 new of 80 responses total. |
cross
|
|
response 38 of 80:
|
Jun 27 13:03 UTC 2007 |
Heh.
|
mcnally
|
|
response 39 of 80:
|
Jun 27 17:13 UTC 2007 |
The bit about putting the window in "hold mode" reminds me of the
windowing environment in Domain/OS, Apollo's Unix-like (but not
*sufficiently* Unix-like) OS offering from the mid-to-late 1980s.
The windows that shells ran in were split into two panes -- the
majority of the window, and a one-line input pane at the bottom.
Input that you typed in the input pane at the bottom wasn't handed
over to the shell until you hit a carriage return, at which point
it was handed over to whatever program you were running. This was
really nice because at the time unix shells mostly didn't have
command-line editing, but under this scheme you could do all your
editing in the input pad in the windowing system and then send it
to the program. If you needed to edit multiple lines, the keyboard
had a "hold" key which would act as you describe "hold" above --
it would stop the processing of input until you hit "hold" again,
in the meantime giving you an expanded edit area in the windowing
system where you could use the cursor keys, mouse pointer, cut and
paste, etc, to work on editing your text.
Programs that used character-by-character input modes (e.g. cbreak)
wouldn't work with this system (the separate edit line would disappear
into the main window, if I recall properly, while you were running
such a program) but for things that used a line-by-line input mode
it was great.
I still maintain that Domain/OS was *WAY* ahead of its time.
In 1987 (wow! 20 years ago!) it had a really nicely-integrated
windowing system with a very cool facility called "edit pads"
which were extremely well integrated with special dedicated keys
on the expanded keyboard, transparent distributed network file system,
unified object and user registry, full-featured filesystem acls,
and other nifty features I'm almost certainly forgetting..
|
cross
|
|
response 40 of 80:
|
Jun 28 03:38 UTC 2007 |
Yeah, I've heard some pretty good things about Domain/OS, but never used it.
My understanding was that it was heavily influenced (if not outright inspired)
by Multics.
|
mcnally
|
|
response 41 of 80:
|
Jun 28 07:56 UTC 2007 |
Another feature of Domain/OS that I think should've become more
widespread was the ability to create variable symlinks -- that is,
you could create mylink -> //server/usr/local/$platform/bin and
the $platform part would be interpreted at runtime by the filesystem
calls, based on the user's environment variables. This made possible
some very flexible ways of supporting different platforms and
alternative environments that could be easily selected by altering
environment variables.
|
cross
|
|
response 42 of 80:
|
Jun 28 17:26 UTC 2007 |
AFS did something similar. Plan 9 got that right by having per-process
namespaces that were mutable by the user. You could, e.g., bind /$cputype/bin
onto /bin and all your executables would appear to be under /bin, and would
be of the correct type.
|
twenex
|
|
response 43 of 80:
|
Jul 9 14:24 UTC 2007 |
I think DragonFlyBSD aims to do this.
|
gull
|
|
response 44 of 80:
|
Aug 22 16:43 UTC 2007 |
resp:12: That made me laugh out loud. I consider myself reasonably
proficient at vi, but I still routinely manage to do things like insert
27 copies of the letter "a" because I forgot which mode I'm in.
I recently started using Emacs, mostly xemacs. (Before this I was
pretty rigidly wedded to "joe.") It's the "official" supported editor
for the department I'm working in, so I figured I'd better learn it.
I've actually become fond of it quite quickly, mostly because its
syntax-highlighting and automatic indenting are light-years ahead of
anything else I've used.
|
remmers
|
|
response 45 of 80:
|
Aug 22 17:11 UTC 2007 |
Right, Emacs' syntax highlighting and automatic indenting really are
better, which is one big reason why I still favor it for programming.
|
kingjon
|
|
response 46 of 80:
|
Aug 22 23:08 UTC 2007 |
Er, vim? By default it has syntax highlighting (provided the terminal supports
it) and displays the current mode.
|
remmers
|
|
response 47 of 80:
|
Aug 22 23:22 UTC 2007 |
How about auto-indenting?
|
cross
|
|
response 48 of 80:
|
Aug 22 23:33 UTC 2007 |
Yeah, it has it too. Personally, I don't like autoindenting of any kind, but
that's why this is `The Great Text-Editor Holy War Item.'
|
unicorn
|
|
response 49 of 80:
|
Aug 22 23:43 UTC 2007 |
I just put these two lines in my .vimrc, and the autoindenting works
the way I want it when I want it, and not when I don't:
autocmd BufRead *.c set cindent
autocmd BufRead *.y set cindent
I think there may be other indents besides cindent for other languages.
|
remmers
|
|
response 50 of 80:
|
Aug 23 09:47 UTC 2007 |
Re #48: Besides helping to make code readable with less work on my
part, I also like auto-indenting because it helps catch syntax errors.
E.g. if I omit a terminating semicolon, the next line isn't indented as
I expect, making the error immediately obvious.
Re #49: Okay, I tried that with vim; had to have the line "set
nocompatible" as well to get it to work. Seems to auto-indent
intelligently, but I'd have to do more playing around to see if it's as
smart about it as emacs. For instance, does it know about comments?
|
cross
|
|
response 51 of 80:
|
Aug 23 13:30 UTC 2007 |
Regarding #50; Like I said, it's a matter of personal preference.
|
remmers
|
|
response 52 of 80:
|
Aug 23 14:10 UTC 2007 |
Absolutely. Why don't you care for auto-indenting?
|
keesan
|
|
response 53 of 80:
|
Aug 23 15:55 UTC 2007 |
I am trying to read a text in Cyrillic, iso 8859-5. I loaded the console
font. Character 155 (e) displays as a blank. The other Cyrillic fonts also
display 155 as a blank. pico vi or 'less -r'. Is there some way around this
other than using X fonts? Opera displays the text properly with its built-in
Cyrillic font. I am told 155 is a control character. cp1251 uses it for half
of an integral sign, and cp866 for a box character, but 8859-5 and koi8-r have
vowels at 155. So I designed cp1251 font.
Also will nano or vi or joe let you type up something that wraps at 80
columns, and then unwrap it before you import it into a wordprocessor?
|
unicorn
|
|
response 54 of 80:
|
Aug 23 18:21 UTC 2007 |
#50: I'm surprised you had to use "set nocompatible". I thought that
was the default when vim detects the presence of .vimrc, even if it's
empty. And yes, it does know about comments.
|
cross
|
|
response 55 of 80:
|
Aug 23 22:48 UTC 2007 |
Regarding #52; Inevitably, it does something that I don't like and then I have
to fiddle with it to get things the way that I want them.
|
mcnally
|
|
response 56 of 80:
|
Aug 25 03:13 UTC 2007 |
re #52: One reason I don't care for the auto-indent feature in vi is
that it inserts tabs instead of spaces in some situations. I'm reasonably
sure there's an easy way to defeat this "feature" if I really wanted to,
but I am easily bothered by that behavior.
|
unicorn
|
|
response 57 of 80:
|
Aug 26 01:00 UTC 2007 |
I believe it has to do with the size of the indent. In addition to
the two lines mentioned, I also have "set shiftwidth=4" in my .vimrc,
which makes my autoindent work four spaces at a time. An eight space
indent will still be done by inserting a tab. My indents typically
go:
1st indent 4 spaces
2nd indent 1 tab
3rd indent 1 tab + 4 spaces
4th indent 2 tabs
5th indent 2 tabs + 4 spaces
etc.
You can easily shift a line or group of lines in or out to a different
indent level using << and >>. I haven't tried to see if spaces could
be substituted for tabs in all cases or not. The above has been
acceptable to me for now.
|
mcnally
|
|
response 58 of 80:
|
Aug 26 02:19 UTC 2007 |
Autoindent in vi doesn't care what your shiftwidth is set to,
it cares where the first non-whitespace character on the line
above it is. Not sure if that's true about vim in one of its
special syntax modes.
The problem I have with tab-substitution on auto-indenting
doesn't require any single indent to be 8 characters from the
previous one, it happens on any line where the first non-whitespace
character is in the 8th or greater column.
|
unicorn
|
|
response 59 of 80:
|
Aug 26 03:19 UTC 2007 |
#59:
> Autoindent in vi doesn't care what your shiftwidth is set to,
> it cares where the first non-whitespace character on the line
> above it is. Not sure if that's true about vim in one of its
> special syntax modes.
I'd have to experiment to find out what it does in all cases, but I
know that vim does as you describe, but recognizes when it should
indent another level or end a level and go back to the previous
level. When indenting a level it uses my shiftwidth, although it
doesn't use my shiftwidth when breaking up a long line into two
shorter lines, an which case, if I remember correctly, it uses
tabs, and I sometimes have to adjust them to suit my preferences,
but I'd have to do that anyway. Sometimes, I want to align things
in a certain way, and I don't think you can automate something
like that for all cases.
> The problem I have with tab-substitution on auto-indenting
> doesn't require any single indent to be 8 characters from the
> previous one, it happens on any line where the first non-whitespace
> character is in the 8th or greater column.
As I said, indents of more than eight spaces will use tabs as much
as possible, and then spaces when an additional tab would go too far
to the right. I don't know offhand if that can be overridden to use
only spaces or not. Does emacs not use tabs for autoindent? It's
been awhile since I tried playing around with emacs, but I thought it
did.
|
remmers
|
|
response 60 of 80:
|
Aug 26 13:03 UTC 2007 |
Re #58 and #59: Right, classical auto-indent in vi is pretty primitive
compared to the language-specific formatting that modern editors like
vim and emacs can do. Maybe the latter should be called
"auto-formatting" rather than "auto-indent".
|
kentn
|
|
response 61 of 80:
|
Aug 26 22:58 UTC 2007 |
In vim, see :he expandtab to get spaces when you indent.
|
mcnally
|
|
response 62 of 80:
|
Aug 27 03:25 UTC 2007 |
Hmmm.. thanks, I'll check that out and set up my .vimrc accordingly.
It certainly beats getting exasperated and piping everything through
"expand" every so often..
|