Path: csiph.com!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!nntp-feed.chiark.greenend.org.uk!ewrotcd!news.nosignal.org!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.000 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'example:': 0.03; 'argument': 0.04; 'binary': 0.05; "'a'": 0.07; 'correspond': 0.07; 'mouse': 0.07; 'type,': 0.07; "'.'": 0.09; 'app,': 0.09; 'hierarchical': 0.09; 'high-level': 0.09; 'item,': 0.09; 'logic': 0.09; 'python:': 0.09; 'subject:still': 0.09; 'looked': 0.10; 'gui': 0.11; 'subject:python': 0.11; ':-)': 0.13; '(where': 0.15; 'dec': 0.15; 'sat,': 0.15; "'a',": 0.16; 'clunky': 0.16; 'command,': 0.16; 'editor,': 0.16; 'received:74.55.86': 0.16; 'received:74.55.86.74': 0.16; 'received:smtp.webfaction.com': 0.16; 'received:webfaction.com': 0.16; 'recognise': 0.16; 'remembered': 0.16; 'ssh': 0.16; 'two.': 0.16; 'yank': 0.16; 'wrote:': 0.17; 'certainly': 0.17; 'instance,': 0.17; 'subject:need': 0.17; 'verbal': 0.17; 'memory': 0.18; 'app': 0.19; 'code.': 0.20; 'mostly': 0.20; 'trying': 0.21; 'do.': 0.21; 'commands,': 0.22; "i'd": 0.22; 'tools,': 0.23; 'idea': 0.24; 'second': 0.24; 'command': 0.24; 'machine': 0.24; 'header:In- Reply-To:1': 0.25; 'header:User-Agent:1': 0.26; '(which': 0.26; 'fit': 0.26; 'coding': 0.27; 'focused': 0.27; 'see,': 0.27; 'interface': 0.27; 'regular': 0.27; 'lines': 0.28; 'skip:( 20': 0.28; 'run': 0.28; '(perhaps': 0.29; 'app.': 0.29; "d'aprano": 0.29; 'editors': 0.29; 'obscure': 0.29; 'separated': 0.29; 'spaces': 0.29; 'steven': 0.29; 'words': 0.29; 'probably': 0.29; "i'm": 0.29; 'maybe': 0.29; 'connection': 0.30; '(from': 0.30; 'seconds': 0.30; 'code': 0.31; 'file': 0.32; 'done,': 0.33; 'interface,': 0.33; 'stands': 0.33; 'zero': 0.33; 'problem': 0.33; 'to:addr:python-list': 0.33; 'another': 0.33; 'that,': 0.34; 'agree': 0.34; 'text': 0.34; 'bigger': 0.35; 'consistent': 0.35; 'faster': 0.35; 'path': 0.35; 'so,': 0.35; 'open': 0.35; 'doing': 0.35; 'pm,': 0.35; 'remote': 0.35; 'subject:?': 0.35; 'there': 0.35; 'really': 0.36; 'but': 0.36; 'characters': 0.36; 'useful': 0.36; 'too': 0.36; 'enough': 0.36; 'bad': 0.37; 'editor': 0.37; 'level': 0.37; 'item': 0.37; 'subject:New': 0.37; 'quite': 0.37; 'rather': 0.37; 'subject:: ': 0.38; 'files': 0.38; 'easier': 0.38; 'some': 0.38; 'delete': 0.38; 'to:addr:python.org': 0.39; 'received:192': 0.39; 'easily': 0.39; 'lower': 0.61; 'first': 0.61; 'stay': 0.61; 'kind': 0.61; 'leaving': 0.62; 'between': 0.63; 'love': 0.63; 'more': 0.63; 'harder': 0.65; 'home': 0.66; 'foreign': 0.72; 'power': 0.74; 'attention': 0.75; 'country': 0.78; 'hand': 0.82; 'commands.': 0.84; 'distinguish': 0.84; 'distracted': 0.84; 'subject:good': 0.84; 'dozens': 0.91; 'forgotten': 0.91; 'hand.': 0.91; 'task,': 0.91; 'trouble.': 0.91; 'picture': 0.96; 'hand,': 0.97 Date: Tue, 01 Jan 2013 13:43:36 -0500 From: Mitya Sirenef User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20121011 Thunderbird/16.0.1 MIME-Version: 1.0 To: python-list@python.org Subject: Re: New to python, do I need an IDE or is vim still good enough? References: <50e25c10$0$30003$c3e8da3$5496439d@news.astraweb.com> In-Reply-To: <50e25c10$0$30003$c3e8da3$5496439d@news.astraweb.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 104 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1357065822 news.xs4all.nl 6946 [2001:888:2000:d::a6]:44181 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:35907 On 12/31/2012 10:46 PM, Steven D'Aprano wrote: > On Sat, 29 Dec 2012 14:00:23 -0500, Mitya Sirenef wrote: > >> I think the general idea is that with editors like Vim you don't get >> distracted by having to do some kind of an editor task, letting you keep >> your full attention on the code logic. For instance, if I need to change >> a block inside parens, I type ci) (stands for change inside parens), >> while with a regular editor I'd have to do it manually and by the time >> I'm done, I'd forget the bigger picture of what I'm doing with the code. > > See, by the time I remembered what obscure (to me) command to type, or > searched the help files and the Internet, I'd have forgotten what the > hell it was I was trying to do. Well, almost. My memory is not quite that > bad, but it would certainly be a much bigger disruption to my coding than > just doing the edit by hand. I would agree with you if I had to look up a command every time I use it. The way it really works for me is that either I use a command often enough that I remember it from the first time I looked it up, and the memory is reinforced every time I use it, OR it's such a rare command that looking it up is not a problem (obviously if it's faster to do it by hand than to look it up, I can do that, as well, which in Vim means using lower level commands that still don't require you leaving the home row.) > > I do love the power of command line tools, but I think that for rich > applications like editors, the interface is so clunky that I'd rather use > a less-powerful editor, and do more editing manually, than try to > memorize "hundreds" of commands. Clunky is the last word I'd use to describe it (ok maybe for Emacs :-) I probably remember about 200 commands, plus or minus, but a lot of them fit into a consistent scheme which makes them much easier to remember: there's (change delete yank vis-select)*(inner outer)*(letter word WORD paragraph )]} ) (Where word includes 'keyword' characters and WORD is separated by spaces). So, these correspond to commands (cdyv)(ia)(lwWp)]}). Therefore, deleting 3 WORDs is 3daW (mnemonic: del a WORD 3 times). I think I have a pretty bad memory but I remembered all of these commands a few at a time without too much trouble. And they're extremely useful even now as I'm editing this email. > > With a GUI app, I can run the mouse over the menus and see a high-level > overview of everything the app can do in a matter of a second or two. > (Perhaps three or five seconds if the app over-uses hierarchical menus.) > But with a text interface, commands are much less discoverable. I can > also use *spacial* memory to zero in on commands much more easily than > verbal memory -- I have no idea whether the command I want is called > "Spam" or "Ham" or "Tinned Bully Beef", but I know it's in the top > quarter of the "Lunch" menu, and I will recognise it when I see it. It's not a binary choice, GVim has a customizable menu system with a simple text format for adding menus (from Vim manual): To create a new menu item, use the ":menu" commands. They are mostly like the ":map" set of commands but the first argument is a menu item name, given as a path of menus and submenus with a '.' between them. eg: :menu File.Save :w :inoremenu File.Save :w :menu Edit.Big\ Changes.Delete\ All\ Spaces :%s/[ ^I]//g > > On the other hand, it's a lot harder to use a GUI app over a slow SSH > connection to a remote machine in a foreign country over a flaky link > than it is to use a command line or text-interface app. With GVim, you can use gui menus just as easily when you open a file remotely. > > >> Another example: >ap stands for "indent a paragraph (separated by blank >> lines)". And there are many dozens if not hundreds such commands that >> let you stay focused on the logic of your code. > > Ah yes, the famous "a for indent" mnemonic. *wink* Well, 'a' is mnemonic for 'a', fittingly ;-). > is for indent, just as < is for dedent. 'a' is to distinguish from inner paragraph command, which omits blank lines after the paragraph (which matter for other commands, but not for indent/dedent.): >ip . - mitya -- Lark's Tongue Guide to Python: http://lightbird.net/larks/