From 997fb4ba696625e27e17c00d5033b20411aa45a3 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar <Bram@vim.org> Date: Fri, 17 Feb 2006 21:53:23 +0000 Subject: [PATCH] updated for version 7.0200 --- runtime/doc/tags | 1 - runtime/doc/todo.txt | 24 +- runtime/doc/version7.txt | 8 +- runtime/tutor/tutor.ja.utf-8 | 612 ++++++++++++++++++++++------------- src/eval.c | 35 +- src/ex_cmds.c | 14 +- src/ex_cmds.h | 4 +- src/ex_cmds2.c | 2 +- src/globals.h | 9 +- src/main.c | 102 ++++-- src/misc1.c | 4 +- src/misc2.c | 10 +- src/proto/window.pro | 2 +- src/screen.c | 21 +- src/search.c | 2 +- src/structs.h | 70 +++- src/version.h | 4 +- 17 files changed, 619 insertions(+), 305 deletions(-) diff --git a/runtime/doc/tags b/runtime/doc/tags index 9c49ee714e..fdaa136f4e 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -5429,7 +5429,6 @@ hebrew hebrew.txt /*hebrew* hebrew.txt hebrew.txt /*hebrew.txt* help various.txt /*help* help-context help.txt /*help-context* -help-tags tags 1 help-translated various.txt /*help-translated* help-xterm-window various.txt /*help-xterm-window* help.txt help.txt /*help.txt* diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index bcdc52c1c6..2912a5884f 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 7.0aa. Last change: 2006 Feb 16 +*todo.txt* For Vim version 7.0aa. Last change: 2006 Feb 17 VIM REFERENCE MANUAL by Bram Moolenaar @@ -32,19 +32,12 @@ be worked on, but only if you sponsor Vim development. See |sponsor|. Support WINDOW TABS. Works like several pages, each with their own split windows. Let's call them "tab pages". - - check all places where lastwin is used - - check all places where win_valid() is used - - check all places where last_window() is used - - ":tabclose N" close tab N - - Add ":tabonly" - close all other tabs. - - check all places wheren only_one_window() is used. - Add tabpage(): returns current tab page number. - ":tabsplit" makes a copy of the current tab page. - Add TabLeavePre and TabEnterPost autocommands - line at top of frame with tabs. Add 'tabtext' option, like 'statusline'. - - make a diff for each tab page separately. - - E999 + - check for E999 - docs: General remark: commands that work on windows only work on the windows in the current tab page. Including :windo. @@ -54,7 +47,10 @@ windows. Let's call them "tab pages". :tab N :tabs {count}gt + :close may close current tab page if there is one window. :tabclose + :tabclose N - close tab N + :tabonly - close all other tabs. :close and :quit (last window in tab) "gt": Use "1gt" - "99gt" to switch to another tab. "gt" goes to the next one. Hint in docs: To mess with another buffer, without @@ -65,15 +61,23 @@ windows. Let's call them "tab pages". X closes current tab page :argall and :ball only opens window for buffers that are not in any window in any tab page - :diffoff only in the current tab page + :diffoff only works in the current tab page + diff works per tab page + "vim -p *" opens each file in a separate tab page (up to 10). - add GUI Tabs for some systems. Patch for GTK 1.2 passed on by Christian Michon, 2004 Jan 6. Simple patch for GTK by Luis M (nov 7). - Need to be able to search the windows in inactive tabs, e.g. for the quickfix window. +Future enhancements: + tab page local variables? + tab page local options? 'diffopt' could differ between tab pages. + tab page local colors? Crash with X command server (Ciaran McCreesh). +Motif: in diff mode dragging one scrollbar doesn't update the other one. + Ctags still hasn't included the patch. Darren is looking for someone to do maintanance. diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt index 7bfc4ec8d1..7f7c092c35 100644 --- a/runtime/doc/version7.txt +++ b/runtime/doc/version7.txt @@ -1,4 +1,4 @@ -*version7.txt* For Vim version 7.0aa. Last change: 2006 Feb 16 +*version7.txt* For Vim version 7.0aa. Last change: 2006 Feb 17 VIM REFERENCE MANUAL by Bram Moolenaar @@ -750,6 +750,9 @@ from happening. ":breakadd here" and ":breakdel here" can be used to set or delete a breakpoint at the cursor. +It is now possible to define a function with: > + :exe "func Test()\n ...\n endfunc" + The tutor was updated to make it simpler to use and added text to explain a few more important commands. Used ideas from Gabriel Zachmann. @@ -1701,4 +1704,7 @@ event that removed the balloon again. Ignore the key release event. ":set background&" didn't use the same logic as was used when starting up. +When "umask" is set such that nothing is writable then the viminfo file would +be written without write permission. (Julian Bridle) + vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime/tutor/tutor.ja.utf-8 b/runtime/tutor/tutor.ja.utf-8 index ae5677ba37..e12cd69862 100644 --- a/runtime/tutor/tutor.ja.utf-8 +++ b/runtime/tutor/tutor.ja.utf-8 @@ -1,25 +1,26 @@ =============================================================================== -= V I M æ•™ 本 (ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«) 㸠よ ㆠ㓠ã - Version 1.5 = += V I M æ•™ 本 (ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«) 㸠よ ㆠ㓠ã - Version 1.7 = =============================================================================== - Vim ã¯ã€ã“ã®ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã§èª¬æ˜Žã™ã‚‹ã«ã¯å¤šã™ãŽã‚‹ç¨‹ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’å‚™ãˆãŸ - éžå¸¸ã«å¼·åŠ›ãªã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã§ã™ã€‚ã“ã®ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã¯ã€ã‚ãªãŸãŒ Vim - を万能エディターã¨ã—ã¦ä½¿ã„ã“ãªã›ã‚‹ã‚ˆã†ã«ãªã‚‹ã®ã«å分ãªã‚³ãƒžãƒ³ãƒ‰ã«ã¤ã„㦠- 説明をã™ã‚‹ã‚ˆã†ãªã£ã¦ã„ã¾ã™ã€‚ + Vim ã¯ã€ã“ã®ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã§èª¬æ˜Žã™ã‚‹ã«ã¯å¤šã™ãŽã‚‹ç¨‹ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’å‚™ãˆãŸéžå¸¸ + ã«å¼·åŠ›ãªã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã§ã™ã€‚ã“ã®ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã¯ã€ã‚ãªãŸãŒ Vim を万能エディ + ターã¨ã—ã¦ä½¿ã„ã“ãªã›ã‚‹ã‚ˆã†ã«ãªã‚‹ã®ã«å分ãªã‚³ãƒžãƒ³ãƒ‰ã«ã¤ã„ã¦èª¬æ˜Žã‚’ã™ã‚‹ã‚ˆã† + ãªã£ã¦ã„ã¾ã™ã€‚ - ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚’完了ã™ã‚‹ã®ã«å¿…è¦ãªæ™‚é–“ã¯ã€è¦šãˆãŸã‚³ãƒžãƒ³ãƒ‰ã‚’試ã™ã®ã«ã©ã‚Œ - ã ã‘æ™‚間を使ã†ã®ã‹ã«ã‚‚よりã¾ã™ãŒã€ãŠã‚ˆã25〜30分ã§ã™ã€‚ + ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚’完了ã™ã‚‹ã®ã«å¿…è¦ãªæ™‚é–“ã¯ã€è¦šãˆãŸã‚³ãƒžãƒ³ãƒ‰ã‚’試ã™ã®ã«ã©ã‚Œã + ã‘æ™‚間を使ã†ã®ã‹ã«ã‚‚よりã¾ã™ãŒã€ãŠã‚ˆã25ã‹ã‚‰30分ã§ã™ã€‚ - å¦ã¶ã‚³ãƒžãƒ³ãƒ‰ã«ã¯ã“ã®æ–‡ç« を変更ã™ã‚‹ã‚‚ã®ã‚‚ã‚りã¾ã™ã€‚ç·´ç¿’ã‚’å§‹ã‚ã‚‹å‰ã«ã‚³ - ピーを作æˆã—ã¾ã—ょã†("vimtutor"ã—ãŸãªã‚‰ã°ã€æ—¢ã«ã‚³ãƒ”ーã•れã¦ã„ã¾ã™)。 + ATTENTION: + 以下ã®ç·´ç¿’用コマンドã«ã¯ã“ã®æ–‡ç« を変更ã™ã‚‹ã‚‚ã®ã‚‚ã‚りã¾ã™ã€‚ç·´ç¿’ã‚’å§‹ã‚ã‚‹å‰ + ã«ã‚³ãƒ”ーを作æˆã—ã¾ã—ょã†("vimtutor"ã—ãŸãªã‚‰ã°ã€æ—¢ã«ã‚³ãƒ”ーã•れã¦ã„ã¾ã™)。 - ã“ã®ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ãŒã€ä½¿ã†ã“ã¨ã§è¦šãˆã‚‰ã‚Œã‚‹ä»•組ã¿ã«ãªã£ã¦ã„ã‚‹ã“ã¨ã‚’ã€å¿ƒ - ã—ã¦ãŠã‹ãªã‘れã°ãªã‚Šã¾ã›ã‚“。æ£ã—ãå¦ç¿’ã™ã‚‹ã«ã¯ã‚³ãƒžãƒ³ãƒ‰ã‚’実際ã«è©¦ã•ãªã‘ - れã°ãªã‚‰ãªã„ã®ã§ã™ã€‚æ–‡ç« ã‚’èªã‚“ã ã ã‘ãªã‚‰ã°ã€ãã£ã¨å¿˜ã‚Œã¦ã—ã¾ã„ã¾ã™!。 + ã“ã®ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ãŒã€ä½¿ã†ã“ã¨ã§è¦šãˆã‚‰ã‚Œã‚‹ä»•組ã¿ã«ãªã£ã¦ã„ã‚‹ã“ã¨ã‚’ã€å¿ƒã— + ã¦ãŠã‹ãªã‘れã°ãªã‚Šã¾ã›ã‚“。æ£ã—ãå¦ç¿’ã™ã‚‹ã«ã¯ã‚³ãƒžãƒ³ãƒ‰ã‚’実際ã«è©¦ã•ãªã‘れ㰠+ ãªã‚‰ãªã„ã®ã§ã™ã€‚æ–‡ç« ã‚’èªã‚“ã ã ã‘ãªã‚‰ã°ã€ãã£ã¨å¿˜ã‚Œã¦ã—ã¾ã„ã¾ã™!。 - ã•ãã€Capsãƒãƒƒã‚¯(Shift-Lock)ã‚ãƒ¼ãŒæŠ¼ã•れã¦ã„ãªã„ã“ã¨ã‚’確èªã—ãŸå¾Œã€ - ç”»é¢ã«ãƒ¬ãƒƒã‚¹ãƒ³1.1 ãŒå…¨éƒ¨è¡¨ç¤ºã•れるã¨ã“ã‚ã¾ã§ã€j ã‚ーを押ã—ã¦ã‚«ãƒ¼ã‚½ãƒ«ã‚’ - 移動ã—ã¾ã—ょã†ã€‚ + ã•ãã€Capsãƒãƒƒã‚¯(Shift-Lock)ã‚ãƒ¼ãŒæŠ¼ã•れã¦ã„ãªã„ã“ã¨ã‚’確èªã—ãŸå¾Œã€ç”»é¢ã« + レッスン1.1 ãŒå…¨éƒ¨è¡¨ç¤ºã•れるã¨ã“ã‚ã¾ã§ã€j ã‚ーを押ã—ã¦ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ + ã—ょã†ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 1.1: カーソルã®ç§»å‹• @@ -33,15 +34,15 @@ 1. ç§»å‹•ã«æ…£ã‚Œã‚‹ã¾ã§ã€ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã§ã‚«ãƒ¼ã‚½ãƒ«ç§»å‹•ã•ã›ã¾ã—ょã†ã€‚ 2. 下ã¸ã®ã‚ー(j)を押ã—ã¤ã¥ã‘ã‚‹ã¨ã€é€£ç¶šã—ã¦ç§»å‹•ã§ãã¾ã™ã€‚ ----> ã“ã‚Œã§æ¬¡ã®ãƒ¬ãƒƒã‚¹ãƒ³ã«ç§»å‹•ã™ã‚‹æ–¹æ³•ãŒã‚ã‹ã‚Šã¾ã—ãŸã。 + ã“ã‚Œã§æ¬¡ã®ãƒ¬ãƒƒã‚¹ãƒ³ã«ç§»å‹•ã™ã‚‹æ–¹æ³•ãŒã‚ã‹ã‚Šã¾ã—ãŸã。 3. 下ã¸ã®ã‚ーを使ã£ã¦ã€ãƒ¬ãƒƒã‚¹ãƒ³1.2 ã«ç§»å‹•ã—ã¾ã—ょã†ã€‚ -NOTE: 何をタイプã—ã¦ã„ã‚‹ã‹åˆ¤ã‚‰ãªããªã£ãŸã‚‰ã€<ESC>を押ã—ã¦ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ã—ã¾ - ã™ã€‚ãれã‹ã‚‰å…¥åŠ›ã—よã†ã¨ã—ã¦ã„ãŸã‚³ãƒžãƒ³ãƒ‰ã‚’å†å…¥åŠ›ã—ã¾ã—ょã†ã€‚ +Note: 何をタイプã—ã¦ã„ã‚‹ã‹åˆ¤ã‚‰ãªããªã£ãŸã‚‰ã€<ESC>を押ã—ã¦ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ã— + ã¾ã™ã€‚ãれã‹ã‚‰å…¥åŠ›ã—よã†ã¨ã—ã¦ã„ãŸã‚³ãƒžãƒ³ãƒ‰ã‚’å†å…¥åŠ›ã—ã¾ã—ょã†ã€‚ -NOTE: カーソルã‚ーã§ã‚‚移動ã§ãã¾ã™ã€‚ã—ã‹ã— hjkl を使用ã™ã‚‹ã“ã¨ã«ä¸€åº¦æ…£ã‚Œã¦ã—ã¾ - ãˆã°ã€ã¯ã‚‹ã‹ã«é€Ÿã移動ã™ã‚‹ã“ã¨ãŒã§ãã‚‹ã§ã—ょã†ã€‚ +Note: カーソルã‚ーã§ã‚‚移動ã§ãã¾ã™ã€‚ã—ã‹ã— hjkl ã«ä¸€åº¦æ…£ã‚Œã¦ã—ã¾ãˆã°ã€ã¯ã‚‹ã‹ + ã«é€Ÿã移動ã™ã‚‹ã“ã¨ãŒã§ãã‚‹ã§ã—ょã†ã€‚ã„やマジã§! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 1.2: VIM ã®èµ·å‹•ã¨çµ‚了 @@ -52,27 +53,27 @@ NOTE: カーソルã‚ーã§ã‚‚移動ã§ãã¾ã™ã€‚ã—ã‹ã— hjkl を使用㙠1. <ESC>ã‚ーを押ã—ã¾ã—ょã†ã€‚(確実ã«ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ã™ã‚‹ãŸã‚) 2. 次ã®ã‚ˆã†ã«ã‚¿ã‚¤ãƒ—: :q! <ENTER> + ã“れã«ã‚ˆã‚Šç·¨é›†ã—ãŸå†…容をä¿å˜ã›ãšã«ã‚¨ãƒ‡ã‚£ã‚¿ãŒçµ‚了ã—ã¾ã™ã€‚ ----> ã“れã«ã‚ˆã‚Šç·¨é›†ã—ãŸå†…容をä¿å˜ã›ãšã«ã‚¨ãƒ‡ã‚£ã‚¿ãŒçµ‚了ã—ã¾ã™ã€‚ - 編集内容をä¿å˜ã—ã¦çµ‚了ã™ã‚‹ã¨ãã¯æ¬¡ã®ã‚ˆã†ã«ã‚¿ã‚¤ãƒ—ã—ã¾ã™: - :wq <ENTER> - - 3. シェルプãƒãƒ³ãƒ—トã‹ã‚‰ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚’å§‹ã‚ã‚‹ã«ã¯ã‚³ãƒžãƒ³ãƒ‰ã‚’タイプã—ã¾ã™ã€‚ + 3. シェルプãƒãƒ³ãƒ—トãŒå‡ºã¦ããŸã‚‰ã€ã“ã®ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚’å§‹ã‚る為ã«ã«ã‚³ãƒžãƒ³ãƒ‰ + をタイプã—ã¾ã™ã€‚ ãã®ã‚³ãƒžãƒ³ãƒ‰ã¯: vimtutor <ENTER> - 通常ã¯ã“ã†ã§ã—ょã†: vim tutor <ENTER> - ----> 'vim' 㯠Vim エディタã®èµ·å‹•ã‚’ã€'tutor' ã¯ç·¨é›†ã—ãŸã„ファイルをæ„味ã—ã¾ã™ã€‚ 4. ã“れã¾ã§ã®ã‚¹ãƒ†ãƒƒãƒ—を覚ãˆè‡ªä¿¡ãŒã¤ã„ãŸãªã‚‰ã°ã€ã‚¹ãƒ†ãƒƒãƒ— 1 ã‹ã‚‰ 3 ã¾ã§ã‚’実 - éš›ã«è©¦ã—ã¦ã€Vim ã‚’1度終了ã—ã¦ã‹ã‚‰å†ã³èµ·å‹•ã—ã¾ã—ょã†ã€‚ãれã‹ã‚‰ãƒ¬ãƒƒã‚¹ãƒ³ - 1.3ã¾ã§ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã•ã›ã¾ã—ょã†ã€‚ + éš›ã«è©¦ã—ã¦ã€Vim ã‚’1度終了ã—ã¦ã‹ã‚‰å†ã³èµ·å‹•ã—ã¾ã—ょã†ã€‚ + +NOTE: :q! <ENTER> ã¯å…¨ã¦ã®å¤‰æ›´ã‚’ç ´æ£„ã—ã¾ã™ã€‚レッスンã«ã¦å¤‰æ›´ã‚’ファイルã«ä¿ + å˜ã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦ã‚‚勉強ã—ã¦ã„ãã¾ã—ょã†ã€‚ + + 5. 1.3ã¾ã§ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã•ã›ã¾ã—ょã†ã€‚ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 1.3: テã‚スト編集 - 削除 ** ノーマルモードã«ã¦ã‚«ãƒ¼ã‚½ãƒ«ã®ä¸‹ã®æ–‡å—を削除ã™ã‚‹ã«ã¯ x を押ã—ã¾ã™ ** - 1. 以下㮠---> ã¨è¨˜ã•れãŸã•れãŸè¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ + 1. 以下㮠---> ã¨ç¤ºã•れãŸè¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ 2. é–“é•ã„ã‚’ä¿®æ£ã™ã‚‹ãŸã‚ã«ã€å‰Šé™¤ã™ã‚‹æœ€åˆã®æ–‡å—ã¾ã§ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã™ã€‚ @@ -82,7 +83,7 @@ NOTE: カーソルã‚ーã§ã‚‚移動ã§ãã¾ã™ã€‚ã—ã‹ã— hjkl を使用㙠---> ãã® ã†ã†ã•㎠㯠ã¤ã¤ãã ã‚’ ã“ãˆãˆã¦ã¦ ã¨ã³ã¯ããŸãŸ - 5. è¡ŒãŒæ£ã—ããªã£ãŸã‚‰ã€ãƒ¬ãƒƒã‚¹ãƒ³ 1.4 ã«ç§»ã‚Šã¾ã—ょã†ã€‚ + 5. è¡ŒãŒæ£ã—ããªã£ãŸã‚‰ã€ãƒ¬ãƒƒã‚¹ãƒ³ 1.4 ã¸é€²ã¿ã¾ã—ょã†ã€‚ NOTE: å…¨ã¦ã®ãƒ¬ãƒƒã‚¹ãƒ³ã‚’通ã˜ã¦ã€è¦šãˆã‚ˆã†ã¨ã™ã‚‹ã®ã§ã¯ãªã実際ã«ã‚„ã£ã¦ã¿ã¾ã—ょã†ã€‚ @@ -95,15 +96,15 @@ NOTE: å…¨ã¦ã®ãƒ¬ãƒƒã‚¹ãƒ³ã‚’通ã˜ã¦ã€è¦šãˆã‚ˆã†ã¨ã™ã‚‹ã®ã§ã¯ãªã ** ノーマルモードã«ã¦ãƒ†ã‚ストを挿入ã™ã‚‹ã«ã¯ i を押ã—ã¾ã™ ** - 1. 以下㮠---> ã¨è¨˜ã•れãŸã•ã‚ŒãŸæœ€åˆã®è¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ + 1. 以下㮠---> ã¨ç¤ºã•ã‚ŒãŸæœ€åˆã®è¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ - 2. 1行目を2行目ã¨åŒã˜æ§˜ã«ã™ã‚‹ãŸã‚ã«ã€ãƒ†ã‚ストを挿入ã—ãªã‘れã°ãªã‚‰ãªã„ä½ - ç½®ã®æ¬¡ã®æ–‡å—ã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã™ã€‚ + 2. 1行目を2行目ã¨åŒã˜æ§˜ã«ã™ã‚‹ãŸã‚ã«ã€ãƒ†ã‚ストを挿入ã—ãªã‘れã°ãªã‚‰ãªã„ä½ç½® + ã®æ¬¡ã®æ–‡å—ã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã™ã€‚ 3. i ã‚ーを押ã—ã¦ã‹ã‚‰ã€è¿½åŠ ãŒå¿…è¦ãªæ–‡å—をタイプã—ã¾ã—ょã†ã€‚ - 4. é–“é•ã„ã‚’ä¿®æ£ã—ãŸã‚‰ <ESC> を押ã—ã¦ã‚³ãƒžãƒ³ãƒ‰ãƒ¢ãƒ¼ãƒ‰ã«æˆ»ã‚Šã€æ£ã—ã„æ–‡ã« - ãªã‚‹æ§˜ã«ã‚¹ãƒ†ãƒƒãƒ— 2 ã‹ã‚‰ 4 を繰り返ã—ã¾ã—ょã†ã€‚ + 4. é–“é•ã„ã‚’ä¿®æ£ã—ãŸã‚‰ <ESC> を押ã—ã¦ã‚³ãƒžãƒ³ãƒ‰ãƒ¢ãƒ¼ãƒ‰ã«æˆ»ã‚Šã€æ£ã—ã„æ–‡ã«ãªã‚‹æ§˜ + ã«ã‚¹ãƒ†ãƒƒãƒ— 2 ã‹ã‚‰ 4 を繰り返ã—ã¾ã—ょã†ã€‚ ---> ã“ã® ã«ã¯ 足りãªã„ テã‚スト ã‚る。 ---> ã“㮠行 ã«ã¯ å¹¾ã¤ã‹ 足りãªã„ テã‚スト ㌠ã‚る。 @@ -112,6 +113,52 @@ NOTE: å…¨ã¦ã®ãƒ¬ãƒƒã‚¹ãƒ³ã‚’通ã˜ã¦ã€è¦šãˆã‚ˆã†ã¨ã™ã‚‹ã®ã§ã¯ãªã +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 1.5: テã‚スト編集 - è¿½åŠ + + + ** テã‚ã‚¹ãƒˆè¿½åŠ ã™ã‚‹ã«ã¯ A を押ã—ã¾ã—ょㆠ** + + 1. 以下㮠---> ã¨ç¤ºã•ã‚ŒãŸæœ€åˆã®è¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ + カーソルãŒãã®æ–‡å—上ã«ã‚ã£ã¦ã‚‚ã‹ã¾ã„ã¾ã›ã‚“。 + + 2. è¿½åŠ ãŒå¿…è¦ãªå ´æ‰€ã§ A をタイプã—ã¾ã—ょã†ã€‚ + + 3. テã‚ã‚¹ãƒˆã‚’è¿½åŠ ã—終ãˆãŸã‚‰ã€ <ESC> を押ã—ã¦ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«æˆ»ã‚Šã¾ã—ょã†ã€‚ + + 4. 2行目㮠---> ã¨ç¤ºã•れãŸå ´æ‰€ã¸ç§»å‹•ã—ã€ã‚¹ãƒ†ãƒƒãƒ— 2 ã‹ã‚‰ 3 繰り返ã—ã¦æ–‡æ³•ã‚’ + ä¿®æ£ã—ã¾ã—ょã†ã€‚ + +---> ã“ã“ã«ã¯é–“é•ã£ãŸãƒ†ã‚ストãŒã‚り + ã“ã“ã«ã¯é–“é•ã£ãŸãƒ†ã‚ストãŒã‚りã¾ã™ã€‚ +---> ã“ã“ã«ã‚‚é–“é•ã£ãŸãƒ†ã‚ス + ã“ã“ã«ã‚‚é–“é•ã£ãŸãƒ†ã‚ストãŒã‚りã¾ã™ã€‚ + + 5. テã‚ストã®è¿½åŠ ãŒè»½å¿«ã«ãªã£ã¦ããŸã‚‰ãƒ¬ãƒƒã‚¹ãƒ³ 1.6 ã¸é€²ã¿ã¾ã—ょã†ã€‚ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 1.6: ファイルã®ç·¨é›† + + + ** ファイルをä¿å˜ã—ã¦çµ‚了ã™ã‚‹ã«ã¯ :wq ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ ** + + !! NOTE: 以下ã®ã‚¹ãƒ†ãƒƒãƒ—を実行ã™ã‚‹å‰ã«ã€ã¾ãšå…¨ä½“ã‚’èªã‚“ã§ãã ã•ã„!! + + 1. レッスン 1.2 ã§ã‚„ã£ãŸã‚ˆã†ã« :q! をタイプã—ã¦ã€ã“ã®ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚’終了 + ã—ã¾ã™ã€‚ + + 2. シェルプãƒãƒ³ãƒ—トã§ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’タイプã—ã¾ã™: vim tutor <ENTER> + 'vim'㌠Vim エディタを起動ã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰ã€'tutor' ã¯ç·¨é›†ã—ãŸã„ファイル㮠+ åå‰ã§ã™ã€‚変更ã—ã¦ã‚‚よã„ファイルを使ã„ã¾ã—ょã†ã€‚ + + 3. å‰ã®ãƒ¬ãƒƒã‚¹ãƒ³ã§å¦ã‚“ã よã†ã«ã€ãƒ†ã‚ストを挿入ã€å‰Šé™¤ã—ã¾ã™ã€‚ + + 4. 変更をファイルã«ä¿å˜ã—ã¾ã™: :wq <ENTER> + + 5. vimtutor ã‚’å†åº¦èµ·å‹•ã—ã€ä»¥ä¸‹ã®è¦ç´„ã¸é€²ã¿ã¾ã—ょã†ã€‚ + + 6. 以上ã®ã‚¹ãƒ†ãƒƒãƒ—ã‚’èªã‚“ã§ç†è§£ã—ãŸä¸Šã§ã“れを実行ã—ã¾ã—ょã†ã€‚ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 1 è¦ç´„ @@ -127,14 +174,14 @@ NOTE: å…¨ã¦ã®ãƒ¬ãƒƒã‚¹ãƒ³ã‚’通ã˜ã¦ã€è¦šãˆã‚ˆã†ã¨ã™ã‚‹ã®ã§ã¯ãªã 4. カーソルã®ä¸‹ã®æ–‡å—を削除ã™ã‚‹ã«ã¯ã€ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã§ x ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ã€‚ 5. カーソルã®ä½ç½®ã«æ–‡å—を挿入ã™ã‚‹ã«ã¯ã€ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã§ i ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ã€‚ - i テã‚ストã®ã‚¿ã‚¤ãƒ— <ESC> + i テã‚ストã®ã‚¿ã‚¤ãƒ— <ESC> カーソルä½ç½®ã«è¿½åŠ + A テã‚ストã®è¿½åŠ <ESC> 行末ã«è¿½åŠ -NOTE: <ESC> ã‚ーを押ã™ã¨ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ç§»è¡Œã—ã¾ã™ã€‚ãã®éš›ã€é–“é•ã£ãŸã‚Šå…¥åŠ›é€”ä¸ - ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’å–り消ã™ã“ã¨ãŒã§ãã¾ã™ã€‚ +NOTE: <ESC> ã‚ーを押ã™ã¨ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ç§»è¡Œã—ã¾ã™ã€‚ãã®éš›ã€é–“é•ã£ãŸã‚Šå…¥åЛ途 + ä¸ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’å–り消ã™ã“ã¨ãŒã§ãã¾ã™ã€‚ ã•ã¦ã€ç¶šã‘ã¦ãƒ¬ãƒƒã‚¹ãƒ³ 2 ã‚’å§‹ã‚ã¾ã—ょã†ã€‚ - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 2.1: 削除コマンド @@ -143,7 +190,7 @@ NOTE: <ESC> ã‚ーを押ã™ã¨ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ç§»è¡Œã—ã¾ã™ã€‚ãã® 1. ノーマルモードã§ã‚ã‚‹ã“ã¨ã‚’確èªã™ã‚‹ãŸã‚ã« <ESC> を押ã—ã¾ã—ょã†ã€‚ - 2. 以下㮠---> ã¨è¨˜ã•れãŸã•れãŸè¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ + 2. 以下㮠---> ã¨ç¤ºã•れãŸè¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ 3. 消ã—ãŸã„å˜èªžã®å…ˆé ã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ @@ -154,7 +201,7 @@ NOTE: <ESC> ã‚ーを押ã™ã¨ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ç§»è¡Œã—ã¾ã™ã€‚ãã® ---> ã“ã® æ–‡ ç´™ ã«ã¯ ã„ãã¤ã‹ã® ãŸã®ã—ã„ å¿…è¦ã®ãªã„ å˜èªž ㌠å«ã¾ã‚Œã¦ ã„ã¾ã™ã€‚ - 5. 3 ã‹ã‚‰ 4 ã¾ã§ã‚’æ–‡ãŒæ£ã—ããªã‚‹ã¾ã§ç¹°ã‚Šè¿”ã—ã€ãƒ¬ãƒƒã‚¹ãƒ³ 2.2 ã«ç§»ã‚Šã¾ã—ょã†ã€‚ + 5. 3 ã‹ã‚‰ 4 ã¾ã§ã‚’æ–‡ãŒæ£ã—ããªã‚‹ã¾ã§ç¹°ã‚Šè¿”ã—ã€ãƒ¬ãƒƒã‚¹ãƒ³ 2.2 ã¸é€²ã¿ã¾ã—ょã†ã€‚ @@ -166,7 +213,7 @@ NOTE: <ESC> ã‚ーを押ã™ã¨ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ç§»è¡Œã—ã¾ã™ã€‚ãã® 1. ノーマルモードã§ã‚ã‚‹ã“ã¨ã‚’確èªã™ã‚‹ã®ã« <ESC> を押ã—ã¾ã—ょã†ã€‚ - 2. 以下㮠---> ã¨è¨˜ã•れãŸã•れãŸè¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ + 2. 以下㮠---> ã¨ç¤ºã•れãŸè¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ 3. æ£ã—ã„æ–‡ã®æœ«å°¾ã¸ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†(最åˆã® . ã®å¾Œã§ã™)。 @@ -175,77 +222,123 @@ NOTE: <ESC> ã‚ーを押ã™ã¨ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ç§»è¡Œã—ã¾ã™ã€‚ãã® ---> 誰ã‹ãŒã“ã®è¡Œã®æœ€å¾Œã‚’2度タイプã—ã¾ã—ãŸã€‚ 2度タイプã—ã¾ã—ãŸã€‚ - 5. ã©ã†ã„ã†ã“ã¨ã‹ç†è§£ã™ã‚‹ãŸã‚ã«ã€ãƒ¬ãƒƒã‚¹ãƒ³ 2.3 ã¸ç§»ã‚Šã¾ã—ょã†ã€‚ + 5. ã©ã†ã„ã†ã“ã¨ã‹ç†è§£ã™ã‚‹ãŸã‚ã«ã€ãƒ¬ãƒƒã‚¹ãƒ³ 2.3 ã¸é€²ã¿ã¾ã—ょã†ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.3: コマンドã¨ç›®çš„語 + レッスン 2.3: オペレータã¨ãƒ¢ãƒ¼ã‚·ãƒ§ãƒ³ + + 多ãã®ã‚³ãƒžãƒ³ãƒ‰ã¯ã‚ªãƒšãƒ¬ãƒ¼ã‚¿ã¨ãƒ¢ãƒ¼ã‚·ãƒ§ãƒ³ã‹ã‚‰ãƒ†ã‚ストã«å¤‰æ›´ã‚’åŠ ã¾ã™ã€‚ + 削除コマンド d ã®ã‚ªãƒšãƒ¬ãƒ¼ã‚¿ã¯æ¬¡ã®æ§˜ã«ãªã£ã¦ã„ã¾ã™: - 削除コマンド d ã®å½¢å¼ã¯æ¬¡ã®æ§˜ã«ãªã£ã¦ã„ã¾ã™: + d モーション - [回数] d 目的語 ã‚‚ã—ã㯠d [回数] 目的語 ãれãžã‚Œ: - 回数 - ãã®ã‚³ãƒžãƒ³ãƒ‰ã‚’何回繰り返ã™ã‹(çœç•¥å¯èƒ½, çœç•¥ã—ãŸæ™‚㯠=1)。 - d - 削除コマンド。 - 目的語 - 何ã«å¯¾ã—ã¦åƒãã‹ã‘ã‚‹ã‹(ä»¥ä¸‹ã«æŒ™ã’ã¾ã™)。 + d - 削除コマンド。 + モーション - 何ã«å¯¾ã—ã¦åƒãã‹ã‘ã‚‹ã‹(ä»¥ä¸‹ã«æŒ™ã’ã¾ã™)。 - 目的語一覧: + オペレータã®ä¸€éƒ¨ä¸€è¦§: w - カーソルä½ç½®ã‹ã‚‰ç©ºç™½ã‚’å«ã‚€å˜èªžã®æœ«å°¾ã¾ã§ã€‚ e - カーソルä½ç½®ã‹ã‚‰ç©ºç™½ã‚’å«ã¾ãªã„å˜èªžã®æœ«å°¾ã¾ã§ã€‚ $ - カーソルä½ç½®ã‹ã‚‰è¡Œæœ«ã¾ã§ã€‚ -NOTE: 冒険ã—ãŸã„人ã¯ã€ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ã¦ã‚³ãƒžãƒ³ãƒ‰ãªã—ã«ç›®çš„語を押ã—㦠+ ã¤ã¾ã‚Š de ã¨ã‚¿ã‚¤ãƒ—ã™ã‚‹ã¨ã€ã‚«ãƒ¼ã‚½ãƒ«ä½ç½®ã‹ã‚‰å˜èªžã®çµ‚ã‚りã¾ã§ã‚’削除ã—ã¾ã™ã€‚ + +NOTE: 冒険ã—ãŸã„人ã¯ã€ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ã¦ã‚³ãƒžãƒ³ãƒ‰ãªã—ã«ãƒ¢ãƒ¼ã‚·ãƒ§ãƒ³ã‚’押ã—㦠ã¿ã¾ã—ょã†ã€‚カーソルãŒç›®çš„語一覧ã§ç¤ºã•れるä½ç½®ã«ç§»å‹•ã™ã‚‹ã¯ãšã§ã™ã€‚ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 2.4: モーションã«ã‚«ã‚¦ãƒ³ãƒˆã‚’使用ã™ã‚‹ + + + ** 何回も行ã„ãŸã„繰り返ã—ã®ãƒ¢ãƒ¼ã‚·ãƒ§ãƒ³ã®å‰ã«æ•°å€¤ã‚’タイプã—ã¾ã™ã€‚ ** + + 1. 以下㮠---> ã¨ç¤ºã•ã‚ŒãŸæ¥ã®å…ˆé ã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã™ã€‚ + + 2. 2dw をタイプã—ã¦å˜èªž2ã¤åˆ†ç§»å‹•ã—ã¾ã™ã€‚ + + 3. 3e をタイプã—ã¦3ã¤ç›®ã®å˜èªžã®çµ‚端ã«ç§»å‹•ã—ã¾ã™ã€‚ + + 4. 0 (ゼãƒ)をタイプã—ã¦è¡Œé ã«ç§»å‹•ã—ã¾ã™ã€‚ + + 5. ステップ 2 㨠3 ã‚’é•ã†æ•°å€¤ã¨ä½¿ã£ã¦ç¹°ã‚Šè¿”ã—ã¾ã™ã€‚ + +---> This is just a line with words you can move around in. + + 6. レッスン 2.5 ã«é€²ã¿ã¾ã—ょã†ã€‚ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 2.4: ãれ以外ã®å½¢ã®ã‚³ãƒžãƒ³ãƒ‰ + レッスン 2.5: より多ãを削除ã™ã‚‹ãŸã‚ã«ã‚«ã‚¦ãƒ³ãƒˆã‚’使用ã™ã‚‹ + + + ** オペレータã¨ã‚«ã‚¦ãƒ³ãƒˆã‚’タイプã™ã‚‹ã¨ã€ãã®æ“作ãŒè¤‡æ•°å›žç¹°ã‚Šè¿”ã•れã¾ã™ã€‚ ** + + 既述ã®å‰Šé™¤ã®ã‚ªãƒšãƒ¬ãƒ¼ã‚¿ã¨ãƒ¢ãƒ¼ã‚·ãƒ§ãƒ³ã®çµ„ã¿åˆã‚ã›ã«ã‚«ã‚¦ãƒ³ãƒˆã‚’è¿½åŠ ã™ã‚‹ã“ã¨ã§ã€ + より多ãã®å‰Šé™¤ãŒè¡Œãˆã¾ã™: + d 数値 モーション + + 1. ---> ã¨ç¤ºã•れãŸè¡Œã®è¡Œé 部分ã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ + + 2. UPPER CASE ã®å˜èªž2ã¤ã‚’ 2dw ã¨ã‚¿ã‚¤ãƒ—ã—ã¦å‰Šé™¤ã—ã¾ã™ã€‚ + + 3. UPPER CASE ã¨ã„ã†é€£ç¶šã—ãŸå˜èªžã‚’ã€1ã¤ã®ã‚³ãƒžãƒ³ãƒ‰ã¨ç•°ãªã‚‹ã‚«ã‚¦ãƒ³ãƒˆã‚’指定ã—〠+ ステップ 1 㨠2 を繰り返ã—ã¾ã™ã€‚ + +---> ã“ã®ABC DE行ã®FGHI JK LMN OPå˜èªžã¯Q RS TUV綺麗ã«ãªã£ãŸã€‚ + +NOTE: オペレータ d ã¨ãƒ¢ãƒ¼ã‚·ãƒ§ãƒ³ã®é–“ã«ã‚«ã‚¦ãƒ³ãƒˆã‚’使ã£ãŸå ´åˆã€ã‚ªãƒšãƒ¬ãƒ¼ã‚¿ã®ãªã„ + å ´åˆã®ãƒ¢ãƒ¼ã‚·ãƒ§ãƒ³ã®ã‚ˆã†ã«å‹•作ã—ã¾ã™ã€‚ + 例: 3dw 㨠d3w ã¯åŒç‰ã§ã€3w を削除ã—ã¾ã™ã€‚ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 2.6: è¡Œã®æ“作 + + ** 行全体を削除ã™ã‚‹ã«ã¯ dd ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ ** - ** 行全体を削除ã™ã‚‹ã«ã¯ dd ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã—ょㆠ** + 行全体を削除ã™ã‚‹é »åº¦ãŒå¤šã„ã®ã§ã€Viã®ãƒ‡ã‚¶ã‚¤ãƒŠãƒ¼ã¯è¡Œã®å‰Šé™¤ã‚’ d ã®2回タイプ㨠+ ã„ã†ç°¡å˜ãªã‚‚ã®ã«æ±ºã‚ã¾ã—ãŸã€‚ - 行全体ã®å‰Šé™¤ã¯é »ç¹ã«è¡Œãªã†ä½œæ¥ãªã®ã§ã€Vim ã®è¨è¨ˆè€…ã¯è¡Œã‚’削除ã™ã‚‹ã®ã«ã¯ã€ - å˜ã«åˆ—内ã«ã¦2回 d をタイプã™ã‚‹æ–¹ãŒç°¡å˜ã ã‚ã†ã¨åˆ¤æ–ã—ã¾ã—ãŸã€‚ + 1. 以下ã®å¥ã®2行目ã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã™ã€‚ + 2. dd ã¨ã‚¿ã‚¤ãƒ—ã—ã¦è¡Œã‚’削除ã—ã¾ã™ã€‚ + 3. ã•らã«4行目ã«ç§»å‹•ã—ã¾ã™ã€‚ + 4. 2dd ã¨ã‚¿ã‚¤ãƒ—ã—ã¦2行を削除ã—ã¾ã™ã€‚ - 1. 下ã«ã‚る一連ã®ãƒ•レーズã®2行目ã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ - 2. dd ã¨ã‚¿ã‚¤ãƒ—ã—ã¦è¡Œã‚’削除ã—ã¾ã—ょã†ã€‚ - 3. ã§ã¯4行目ã«ç§»å‹•ã—ã¦ã¿ã¾ã—ょã†ã€‚ - 4. 2dd ã¨ã‚¿ã‚¤ãƒ—ã—ã¦2行削除ã—ã¦ã¿ã¾ã—ょã†ã€‚ - (回数-コマンド-目的語 ã®å½¢å¼ã‚’æ€ã„出ã—ã¾ã—ょã†) +---> 1) ãƒãƒ©ã¯èµ¤ã„〠+---> 2) ã¤ã¾ã‚‰ãªã„ã‚‚ã®ã¯æ¥½ã—ã„〠+---> 3) スミレã¯é’ã„〠+---> 4) ç§ã¯è»Šã‚’ã‚‚ã£ã¦ã„る〠+---> 5) æ™‚è¨ˆãŒæ™‚刻を告ã’る〠+---> 6) ç ‚ç³–ã¯ç”˜ã„ +---> 7) オマエモナー - 1) ãƒãƒ©ã¯èµ¤ã„〠- 2) ã¤ã¾ã‚‰ãªã„ã‚‚ã®ã¯æ¥½ã—ã„〠- 3) スミレã¯é’ã„〠- 4) ç§ã¯è»Šã‚’ã‚‚ã£ã¦ã„る〠- 5) æ™‚è¨ˆãŒæ™‚刻を告ã’る〠- 6) ç ‚ç³–ã¯ç”˜ã„ - 7) オマエモナー ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 2.5: やり直ã—コマンド + レッスン 2.7: やり直ã—コマンド ** 最後ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’å–り消ã™ã«ã¯ u を押ã—ã¾ã™ã€‚U ã¯è¡Œå…¨ä½“ã®å–消ã§ã™ã€‚ ** - 1. 以下㮠---> ã¨è¨˜ã•れãŸã•れãŸè¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã€æœ€åˆã®é–“é•ã„ã«ã‚«ãƒ¼ã‚½ãƒ« - を移動ã—ã¾ã—ょã†ã€‚ + 1. 以下㮠---> ã¨ç¤ºã•れãŸè¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã€æœ€åˆã®é–“é•ã„ã«ã‚«ãƒ¼ã‚½ + ルを移動ã—ã¾ã—ょã†ã€‚ 2. x をタイプã—ã¦ã„らãªã„å…ˆé ã®æ–‡å—を削除ã—ã¾ã—ょã†ã€‚ 3. ã•ãã€u をタイプã—ã¦æœ€å¾Œã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã‚’å–り消ã—ã¾ã—ょã†ã€‚ 4. 今度ã¯ã€x を使用ã—ã¦èª¤ã‚Šã‚’å…¨ã¦ä¿®æ£ã—ã¾ã—ょã†ã€‚ 5. 大文å—ã® U をタイプã—ã¦ã€è¡Œã‚’å…ƒã®çŠ¶æ…‹ã«æˆ»ã—ã¾ã—ょã†ã€‚ 6. u をタイプã—ã¦ç›´å‰ã® U ã‚³ãƒžãƒ³ãƒ‰ã‚’å–æ¶ˆã—ã¾ã—ょã†ã€‚ - 7. ã§ã¯ã‚³ãƒžãƒ³ãƒ‰ã‚’å†å®Ÿè¡Œã™ã‚‹ã®ã« CTRL-R (CTRL を押ã—ãŸã¾ã¾ R を打ã¤)ã‚’ - 数回タイプã—ã¦ã¿ã¾ã—ょã†(å–æ¶ˆã®å–消)。 + 7. ã§ã¯ã‚³ãƒžãƒ³ãƒ‰ã‚’å†å®Ÿè¡Œã™ã‚‹ã®ã« CTRL-R (CTRL を押ã—ãŸã¾ã¾ R を打ã¤)を数回 + タイプã—ã¦ã¿ã¾ã—ょã†(å–æ¶ˆã®å–消)。 ---> ã“ã®ã®è¡Œã®ã®é–“é•ã„ã‚’ä¿®æ£ã€…ã—ã€å¾Œã§ãれらã®ä¿®æ£ã‚’ã‚’å–æ¶ˆã—ã¾ã¾ã™ã™ã€‚ - 8. ã“れã¯ã¨ã¦ã‚‚便利ãªã‚³ãƒžãƒ³ãƒ‰ã§ã™ã€‚ã•ãレッスン 2 è¦ç´„ã«ç§»ã‚Šã¾ã—ょã†ã€‚ + 8. ã“れã¯ã¨ã¦ã‚‚便利ãªã‚³ãƒžãƒ³ãƒ‰ã§ã™ã€‚ã•ãレッスン 2 è¦ç´„ã¸é€²ã¿ã¾ã—ょã†ã€‚ @@ -255,24 +348,24 @@ NOTE: 冒険ã—ãŸã„人ã¯ã€ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ã¦ã‚³ãƒžãƒ³ãƒ‰ãªã—ã« 1. カーソルä½ç½®ã‹ã‚‰å˜èªžã®æœ«å°¾ã¾ã§ã‚’削除ã™ã‚‹ã«ã¯ dw ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ã€‚ - 2. カーソルä½ç½®ã‹ã‚‰è¡Œã®æœ«å°¾ã¾ã§ã‚’削除ã™ã‚‹ã«ã¯ d$ ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ã€‚ - 3. 行全体を削除ã™ã‚‹ã«ã¯ dd ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ã€‚ - 4. ノーマルモードã§ã®ã‚³ãƒžãƒ³ãƒ‰å½¢å¼ã¯ + 4. モーションを繰り返ã™ã«ã¯æ•°å€¤ã‚’付与ã—ã¾ã™: 2w + 5. 変更ã«ç”¨ã„るコマンドã®å½¢å¼ã¯ + オペレータ [数値] モーション - [回数] コマンド 目的語 ã‚‚ã—ã㯠コマンド [回数] 目的語 ãれãžã‚Œ: - 回数 - ãã®ã‚³ãƒžãƒ³ãƒ‰ã‚’何回繰り返ã™ã‹ã€‚ - コマンド - 削除 d ã®é¡žã§ä½•ã‚’ã™ã‚‹ã‹ã€‚ - 目的語 - å˜èªž w や行末 $ ãªã©ã®é¡žã§ä½•ã«å¯¾ã—ã¦åƒãã‹ã‘ã‚‹ã‹ã€‚ + オペレータ - 削除 d ã®é¡žã§ä½•ã‚’ã™ã‚‹ã‹ã€‚ + 数値 - ãã®ã‚³ãƒžãƒ³ãƒ‰ã‚’何回繰り返ã™ã‹ã€‚ + モーション - w (å˜èªž)ã‚„ $ (行末)ãªã©ã®é¡žã§ã€ãƒ†ã‚ストã®ä½•ã«å¯¾ã—ã¦åƒãã‹ + ã‘ã‚‹ã‹ã€‚ - 5. å‰å›žã®å‹•ä½œã‚’å–æ¶ˆã™: u (å°æ–‡å— u) + 6. 行ã®å…ˆé ã«ç§»å‹•ã™ã‚‹ã«ã¯ã‚¼ãƒã‚’使用ã—ã¾ã™: 0 + + 7. å‰å›žã®å‹•ä½œã‚’å–æ¶ˆã™: u (å°æ–‡å— u) 行全体ã®å¤‰æ›´ã‚’å–æ¶ˆã™: U (å¤§æ–‡å— U) å–æ¶ˆã—ã®å–消ã—: CTRL-R - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 3.1: 貼り付ã‘コマンド @@ -302,7 +395,7 @@ NOTE: 冒険ã—ãŸã„人ã¯ã€ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ã¦ã‚³ãƒžãƒ³ãƒ‰ãªã—ã« ** カーソルã®ä¸‹ã®æ–‡å—ã‚’ç½®ãæ›ãˆã‚‹ã«ã¯ r をタイプã—ã¾ã™ ** - 1. 以下㮠---> ã¨è¨˜ã•れãŸã•ã‚ŒãŸæœ€åˆã®è¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ + 1. 以下㮠---> ã¨ç¤ºã•ã‚ŒãŸæœ€åˆã®è¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ 2. 最åˆã®é–“é•ã„ã®å…ˆé ã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ @@ -313,7 +406,7 @@ NOTE: 冒険ã—ãŸã„人ã¯ã€ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ã¦ã‚³ãƒžãƒ³ãƒ‰ãªã—ã« ---> ã“ã®åˆã‚’人力ã—ãŸæ™‚ãã€ãã®äººã¯å¹¾ã¤ã‹å•é•ã£ãŸã‚ーを押ã—ã‚‚ã—ãŸ! ---> ã“ã®è¡Œã‚’入力ã—ãŸæ™‚ã«ã€ãã®äººã¯å¹¾ã¤ã‹é–“é•ã£ãŸã‚ーを押ã—ã¾ã—ãŸ! - 5. ã•ãã€ãƒ¬ãƒƒã‚¹ãƒ³ 3.2 ã«ç§»ã‚Šã¾ã—ょã†ã€‚ + 5. ã•ãã€ãƒ¬ãƒƒã‚¹ãƒ³ 3.2 ã¸é€²ã¿ã¾ã—ょã†ã€‚ NOTE: 実際ã«è©¦ã—ã¾ã—ょã†ã€‚決ã—ã¦è¦šãˆã‚‹ã ã‘ã«ã¯ã—ãªã„ã“ã¨ã€‚ @@ -325,7 +418,7 @@ NOTE: 実際ã«è©¦ã—ã¾ã—ょã†ã€‚決ã—ã¦è¦šãˆã‚‹ã ã‘ã«ã¯ã—ãªã„ã“ ** å˜èªžã®ä¸€éƒ¨ã€ã‚‚ã—ãã¯å…¨ä½“を変更ã™ã‚‹ã«ã¯ cw ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ ** - 1. 以下㮠---> ã¨è¨˜ã•れãŸã•ã‚ŒãŸæœ€åˆã®è¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ + 1. 以下㮠---> ã¨ç¤ºã•ã‚ŒãŸæœ€åˆã®è¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ 2. lubw ã® u ã®ä½ç½®ã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ @@ -348,14 +441,13 @@ cw ã¯å˜èªžã‚’変更ã™ã‚‹ã ã‘ã§ãªãã€æŒ¿å…¥ã‚‚行ãˆã‚‹ã“ã¨ã«æ³¨æ„ ** 変更コマンドã¯ã€å‰Šé™¤ã‚³ãƒžãƒ³ãƒ‰ã¨åŒã˜æ§˜ã«ã‚ªãƒ–ジェクトを使用ã—ã¾ã™ ** - 1. 変更コマンドã¯ã€å‰Šé™¤ã‚³ãƒžãƒ³ãƒ‰ã¨åŒã˜ã‚ˆã†ãªå‹•作をã—ã¾ã™ã€‚ãã®å½¢å¼ã¯ - [回数] c 目的語 ã‚‚ã—ã㯠c [回数] 目的語 + c [数値] モーション 2. オブジェクトもåŒã˜ã§ã€w ã¯å˜èªžã€ $ ã¯è¡Œæœ«ãªã©ã¨ã„ã£ãŸã‚‚ã®ã§ã™ã€‚ - 3. 以下㮠---> ã¨è¨˜ã•れãŸã•れãŸè¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ + 3. 以下㮠---> ã¨ç¤ºã•れãŸè¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ 4. 最åˆã®é–“é•ã„ã¸ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ @@ -364,6 +456,7 @@ cw ã¯å˜èªžã‚’変更ã™ã‚‹ã ã‘ã§ãªãã€æŒ¿å…¥ã‚‚行ãˆã‚‹ã“ã¨ã«æ³¨æ„ ---> The end of this line needs some help to make it like the second. ---> The end of this line needs to be corrected using the c$ command. +NOTE: タイプä¸ã®é–“é•ã„ã¯ãƒãƒƒã‚¯ã‚¹ãƒšãƒ¼ã‚¹ã‚ーを使ã£ã¦ç›´ã™ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 3 è¦ç´„ @@ -376,40 +469,40 @@ cw ã¯å˜èªžã‚’変更ã™ã‚‹ã ã‘ã§ãªãã€æŒ¿å…¥ã‚‚行ãˆã‚‹ã“ã¨ã«æ³¨æ„ 2. カーソルã®ä¸‹ã®æ–‡å—ã‚’ç½®ãæ›ãˆã‚‹ã«ã¯ã€r をタイプã—ãŸå¾Œã€ãã‚Œã‚’ç½®ãæ›ãˆã‚‹ æ–‡å—をタイプã—ã¾ã™ã€‚ - 3. 変更コマンドã§ã¯ã‚«ãƒ¼ã‚½ãƒ«ä½ç½®ã‹ã‚‰ç‰¹å®šã®ç›®çš„èªžã§æŒ‡å®šã•れる終端ã¾ã§ã‚’変更 - ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚例ãˆã° cw ãªã‚‰ã°ã‚«ãƒ¼ã‚½ãƒ«ä½ç½®ã‹ã‚‰å˜èªžã®çµ‚ã‚りã¾ã§ã€ + 3. 変更コマンドã§ã¯ã‚«ãƒ¼ã‚½ãƒ«ä½ç½®ã‹ã‚‰ç‰¹å®šã®ãƒ¢ãƒ¼ã‚·ãƒ§ãƒ³ã§æŒ‡å®šã•れる終端ã¾ã§ã‚’変 + æ›´ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚例ãˆã° cw ãªã‚‰ã°ã‚«ãƒ¼ã‚½ãƒ«ä½ç½®ã‹ã‚‰å˜èªžã®çµ‚ã‚りã¾ã§ã€ c$ ãªã‚‰ã°è¡Œã®çµ‚ã‚りã¾ã§ã‚’変更ã—ã¾ã™ã€‚ 4. 変更コマンドã®å½¢å¼ã¯ - [回数] c 目的語 ã‚‚ã—ã㯠c [回数] 目的語 + c [数値] モーション -ã•ãã€æ¬¡ã®ãƒ¬ãƒƒã‚¹ãƒ³ã«ç§»ã‚Šã¾ã—ょã†ã€‚ +ã•ãã€æ¬¡ã®ãƒ¬ãƒƒã‚¹ãƒ³ã¸é€²ã¿ã¾ã—ょã†ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 4.1: ä½ç½®ã¨ãƒ•ã‚¡ã‚¤ãƒ«ã®æƒ…å ± - - ** ファイル内ã§ã®ä½ç½®ã¨ãƒ•ァイルã®çŠ¶æ…‹ã‚’è¡¨ç¤ºã™ã‚‹ã«ã¯ CTRL-g をタイプã—ã¾ã™ã€‚ - ファイル内ã®ã‚る行ã«ç§»å‹•ã™ã‚‹ã«ã¯ SHIFT-G をタイプã—ã¾ã™ ** + ** ファイル内ã§ã®ä½ç½®ã¨ãƒ•ァイルã®çŠ¶æ…‹ã‚’è¡¨ç¤ºã™ã‚‹ã«ã¯ CTRL-G をタイプã—ã¾ã™ã€‚ + ファイル内ã®ã‚る行ã«ç§»å‹•ã™ã‚‹ã«ã¯ G をタイプã—ã¾ã™ ** NOTE: ステップを実行ã™ã‚‹å‰ã«ã€ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³å…¨ã¦ã«ç›®ã‚’通ã—ã¾ã—ょã†!! - 1. CTRL を押ã—ãŸã¾ã¾ g を押ã—ã¾ã—ょã†ã€‚ページã®ä¸€ç•ªä¸‹ã«ã‚るステータス行 - ã«ãƒ•ァイルåã¨è¡ŒãŒè¡¨ç¤ºã•れるã¯ãšã§ã™ã€‚ ステップ 3 ã®ãŸã‚ã«è¡Œç•ªå·ã‚’ - 覚ãˆã¦ãŠãã¾ã—ょã†ã€‚(訳者注:ルーラーãŒã‚ã‚‹å ´åˆã¯ãã¡ã‚‰ã«æ³¨ç›®) - - 2. 最下行ã«ç§»å‹•ã™ã‚‹ãŸã‚ã« shift-G ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã—ょã†ã€‚ + 1. CTRL を押ã—ãŸã¾ã¾ g を押ã—ã¾ã—ょã†ã€‚ã“ã®æ“作を CTRL-G ã¨å‘¼ã‚“ã§ã„ã¾ã™ã€‚ + ページã®ä¸€ç•ªä¸‹ã«ãƒ•ァイルåã¨è¡Œç•ªå·ãŒè¡¨ç¤ºã•れるã¯ãšã§ã™ã€‚ ステップ 3ã®ãŸã‚ + ã«è¡Œç•ªå·ã‚’覚ãˆã¦ãŠãã¾ã—ょã†ã€‚ - 3. å…ˆã»ã©ã®è¡Œã®ç•ªå·ã‚’タイプã—〠shift-G をタイプã—ã¾ã—ょã†ã€‚ - 最åˆã« Ctrl-g を押ã—ãŸè¡Œã«æˆ»ã£ã¦æ¥ã‚‹ã¯ãšã§ã™ã€‚ - (æ•°å—をタイプã—ã¦ã„ã‚‹ã¨ãã«ã¯ç”»é¢ã«è¡¨ç¤ºã•れã¾ã›ã‚“) +NOTE: ç”»é¢ã®å³ä¸‹éš…ã«ã‚«ãƒ¼ã‚½ãƒ«ã®ä½ç½®ãŒè¡¨ç¤ºã•れã¦ã„ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。ã“れ㯠+ 'ruler' オプション(レッスン6ã§èª¬æ˜Ž)ã‚’è¨å®šã™ã‚‹ã“ã¨ã§è¡¨ç¤ºã•れã¾ã™ã€‚ - 4. è‡ªä¿¡ãŒæŒã¦ãŸã‚‰ã‚¹ãƒ†ãƒƒãƒ— 1 ã‹ã‚‰ 3 を実行ã—ã¾ã—ょã†ã€‚ + 2. 最下行ã«ç§»å‹•ã™ã‚‹ãŸã‚ã« G をタイプã—ã¾ã—ょã†ã€‚ + ファイルã®å…ˆé ã«ç§»å‹•ã™ã‚‹ã«ã¯ gg ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã—ょã†ã€‚ + 3. å…ˆã»ã©ã®è¡Œã®ç•ªå·ã‚’タイプ㗠G をタイプã—ã¾ã—ょã†ã€‚最åˆã« CTRL-G を押ã—ãŸè¡Œ + ã«æˆ»ã£ã¦æ¥ã‚‹ã¯ãšã§ã™ã€‚ + 4. è‡ªä¿¡ãŒæŒã¦ãŸã‚‰ã‚¹ãƒ†ãƒƒãƒ— 1 ã‹ã‚‰ 3 を実行ã—ã¾ã—ょã†ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 4.2: 検索コマンド @@ -417,22 +510,22 @@ cw ã¯å˜èªžã‚’変更ã™ã‚‹ã ã‘ã§ãªãã€æŒ¿å…¥ã‚‚行ãˆã‚‹ã“ã¨ã«æ³¨æ„ ** 語å¥ã‚’検索ã™ã‚‹ã«ã¯ / ã¨ã€å‰æ–¹æ¤œç´¢ã™ã‚‹èªžå¥ã‚’タイプã—ã¾ã™ã€‚** - 1. ノーマルモード㧠/ ã¨ã„ã†æ–‡å—をタイプã—ã¾ã™ã€‚ç”»é¢ä¸€ç•ªä¸‹ã« : コマンド - ã¨åŒã˜æ§˜ã« / ãŒç¾ã‚Œã‚‹ã“ã¨ã«æ°—ã¥ãã§ã—ょã†ã€‚ + 1. ノーマルモード㧠/ ã¨ã„ã†æ–‡å—をタイプã—ã¾ã™ã€‚ç”»é¢ä¸€ç•ªä¸‹ã« : コマンド㨠+ åŒã˜æ§˜ã« / ãŒç¾ã‚Œã‚‹ã“ã¨ã«æ°—ã¥ãã§ã—ょã†ã€‚ 2. ã§ã¯ã€'errroor' <ENTER> ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã—ょã†ã€‚ã“ã‚ŒãŒæ¤œç´¢ã—ãŸã„å˜èªžã§ã™ã€‚ 3. åŒã˜èªžã‚’ã‚‚ã†ä¸€åº¦æ¤œç´¢ã™ã‚‹ã¨ã㯠å˜ã« n をタイプã—ã¾ã™ã€‚ 逆方å‘ã«èªžå¥ã‚’検索ã™ã‚‹ã¨ã㯠N をタイプã—ã¾ã™ã€‚ - 4. 逆方å‘ã«èªžå¥ã‚’検索ã—ãŸã„å ´åˆã¯ã€/ コマンドã®ã‹ã‚り㫠? コマンドを使用㗠- ã¾ã™ã€‚ - ----> "errroor" is not the way to spell error; errroor is an error. - -検索ãŒãƒ•ァイルã®çµ‚ã‚りã«é”ã™ã‚‹ã¨ã€ãƒ•ァイルã®å…ˆé ã‹ã‚‰æ¤œç´¢ã‚’続行ã—ã¾ã™ã€‚ + 4. 逆方å‘ã«èªžå¥ã‚’検索ã™ã‚‹å ´åˆã¯ã€/ ã®ä»£ã‚り㫠? コマンドを使用ã—ã¾ã™ã€‚ + 5. å…ƒã®å ´æ‰€ã«æˆ»ã‚‹ã«ã¯ CTRL-O (Ctrl を押ã—ç¶šã‘ãªãŒã‚‰ o æ–‡å—タイプ)をタイプ㗠+ ã¾ã™ã€‚ã•ã‚‰ã«æˆ»ã‚‹ã«ã¯ã“れを繰り返ã—ã¾ã™ã€‚CTRL-I ã¯å‰æ–¹å‘ã§ã™ã€‚ +Note: "errroor" 㯠error ã¨ã‚¹ãƒšãƒ«ãŒé•ã„ã¾ã™; errroor ã¯ã„ã‚ゆる error ã§ã™ã€‚ +Note: 検索ãŒãƒ•ァイルã®çµ‚ã‚りã«é”ã™ã‚‹ã¨ã€ã‚ªãƒ—ション 'wrapscan' ãŒè¨å®šã•れã¦ã„ã‚‹ + å ´åˆã¯ã€ãƒ•ァイルã®å…ˆé ã‹ã‚‰æ¤œç´¢ã‚’続行ã—ã¾ã™ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 4.3: 対応ã™ã‚‹æ‹¬å¼§ã‚’検索 @@ -440,8 +533,7 @@ cw ã¯å˜èªžã‚’変更ã™ã‚‹ã ã‘ã§ãªãã€æŒ¿å…¥ã‚‚行ãˆã‚‹ã“ã¨ã«æ³¨æ„ ** 対応ã™ã‚‹ ),] ã‚„ } を検索ã™ã‚‹ã«ã¯ % をタイプã—ã¾ã™ ** - 1. 以下㮠---> ã¨è¨˜ã•れãŸã•れãŸè¡Œã§ (,[ ã‹ { ã®ã©ã‚Œã‹ã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動 - ã—ã¾ã—ょã†ã€‚ + 1. 下㮠---> ã§ç¤ºã•れãŸè¡Œã§ (,[ ã‹ { ã®ã©ã‚Œã‹ã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ 2. ãã“ã§ % ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã—ょã†ã€‚ @@ -449,21 +541,22 @@ cw ã¯å˜èªžã‚’変更ã™ã‚‹ã ã‘ã§ãªãã€æŒ¿å…¥ã‚‚行ãˆã‚‹ã“ã¨ã«æ³¨æ„ 4. 最åˆã®æ‹¬å¼§ã«ç§»å‹•ã™ã‚‹ã«ã¯ % ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã—ょã†ã€‚ + 5. ä»–ã® (,),[,],{ or } ã§ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã€% ãŒä½•ã‚’ã—ã¦ã„ã‚‹ã‹ç¢ºèªã—ã¾ã—ょã†ã€‚ + ---> This ( is a test line with ('s, ['s ] and {'s } in it. )) + NOTE: ã“ã®æ©Ÿèƒ½ã¯æ‹¬å¼§ãŒä¸€è‡´ã—ã¦ã„ãªã„プãƒã‚°ãƒ©ãƒ をデãƒãƒƒã‚°ã™ã‚‹ã®ã«ã¨ã¦ã‚‚役立㡠ã¾ã™ã€‚ - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 4.4: é–“é•ã„を変更ã™ã‚‹æ–¹æ³• ** 'old' ã‚’ 'new' ã«ç½®æ›ã™ã‚‹ã«ã¯ :s/old/new/g ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ ** - 1. 以下㮠---> ã¨è¨˜ã•れãŸã•れãŸè¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ + 1. 以下㮠---> ã¨ç¤ºã•れãŸè¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ 2. :s/thee/the <ENTER> ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã—ょã†ã€‚ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã¯ãã®è¡Œã§æœ€åˆã«è¦‹ ã¤ã‹ã£ãŸã‚‚ã®ã«ã ã‘行ãªã‚れるã“ã¨ã«æ°—ã‚’ã¤ã‘ã¾ã—ょã†ã€‚ @@ -474,27 +567,28 @@ NOTE: ã“ã®æ©Ÿèƒ½ã¯æ‹¬å¼§ãŒä¸€è‡´ã—ã¦ã„ãªã„プãƒã‚°ãƒ©ãƒ をデãƒãƒƒ ---> thee best time to see thee flowers is in thee spring. 4. 複数行ã‹ã‚‰è¦‹ã¤ã‹ã‚‹æ–‡å—を変更ã™ã‚‹ã«ã¯ - :#,#s/old/new/g #,# ã¯ï¼’行ã®è¡Œç•ªå·ã‚’指ã—ã¾ã™ã€‚ + :#,#s/old/new/g #,# ã«ã¯ç½®ãæ›ãˆã‚‹ç¯„囲ã®é–‹å§‹ã¨çµ‚了ã®è¡Œç•ªå·ã‚’指定ã—ã¾ + ã™ã€‚ :%s/old/new/g ファイル全体ã§è¦‹ã¤ã‹ã‚‹ã‚‚ã®ã«å¯¾ã—ã¦å¤‰æ›´ã™ã‚‹ã€‚ - - - + :%s/old/new/gc ファイル全体ã§è¦‹ã¤ã‹ã‚‹ã‚‚ã®ã«å¯¾ã—ã¦ã€1ã¤1ã¤ç¢ºèªã‚’ã¨ã‚Šãª + ãŒã‚‰å¤‰æ›´ã™ã‚‹ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 4 è¦ç´„ - 1. Ctrl-g ã¯ãƒ•ァイルã§ã®ä½ç½®ã¨ãƒ•ァイルã®è©³ç´°ã‚’表示ã—ã¾ã™ã€‚ - Shift-G ã¯ãƒ•ã‚¡ã‚¤ãƒ«ã®æœ€ä¸‹è¡Œã«ç§»å‹•ã—ã¾ã™ã€‚行番å·å¾Œã« Shift-G ã¨ã™ã‚‹ã¨ - ãã®è¡Œã«ç§»å‹•ã—ã¾ã™ã€‚ + 1. CTRL-G ã¯ãƒ•ァイルã§ã®ä½ç½®ã¨ãƒ•ァイルã®è©³ç´°ã‚’表示ã—ã¾ã™ã€‚ + G ã¯ãƒ•ã‚¡ã‚¤ãƒ«ã®æœ€ä¸‹è¡Œã«ç§»å‹•ã—ã¾ã™ã€‚ + 数値 G ã¯ãã®è¡Œã«ç§»å‹•ã—ã¾ã™ã€‚ + gg ã¯å…ˆé 行ã«ç§»å‹•ã—ã¾ã™ã€‚ 2. / ã®å¾Œã«èªžå¥ã‚’タイプã™ã‚‹ã¨å‰æ–¹ã«èªžå¥ã‚’検索ã—ã¾ã™ã€‚ ? ã®å¾Œã«èªžå¥ã‚’タイプã™ã‚‹ã¨å¾Œæ–¹ã«èªžå¥ã‚’検索ã—ã¾ã™ã€‚ - 検索ã®å¾Œ n ã§ã€åŒæ–¹å‘ã«æ¤œç´¢ã‚’å†ã³è¡Œã„ã€ã¾ãŸ N ã§é€†æ–¹å‘ã«æ¤œç´¢ã‚’行ãªã„ã¾ - ã™ã€‚ + 検索ã®å¾Œã® n ã¯åŒã˜æ–¹å‘ã®æ¬¡ã®æ¤œç´¢ã‚’ã€N ã¯é€†æ–¹å‘ã®æ¤œç´¢ã‚’ã—ã¾ã™ã€‚ + CTRL-O ã¯å ´æ‰€ã‚’å‰ã«ç§»ã—ã€CTRL-I ã¯å ´æ‰€ã‚’次ã«ç§»å‹•ã—ã¾ã™ã€‚ - 3. (,),[,],{, or } 上ã«ã‚«ãƒ¼ã‚½ãƒ«ãŒã‚る状態㧠% をタイプã™ã‚‹ã¨ - 対応ã—ãŸå¯¾ã«ç§»å‹•ã—ã¾ã™ã€‚ + 3. (,),[,],{, ã‚‚ã—ã㯠} 上ã«ã‚«ãƒ¼ã‚½ãƒ«ãŒã‚る状態㧠% をタイプã™ã‚‹ã¨å¯¾ã«ãªã‚‹æ–‡ + å—ã¸ç§»å‹•ã—ã¾ã™ã€‚ 4. ç¾åœ¨è¡Œã®æœ€åˆã® old ã‚’ new ã«ç½®æ›ã™ã‚‹ã€‚ :s/old/new ç¾åœ¨è¡Œã®å…¨ã¦ã® old ã‚’ new ã«ç½®æ›ã™ã‚‹ã€‚ :s/old/new/g @@ -502,7 +596,6 @@ NOTE: ã“ã®æ©Ÿèƒ½ã¯æ‹¬å¼§ãŒä¸€è‡´ã—ã¦ã„ãªã„プãƒã‚°ãƒ©ãƒ をデãƒãƒƒ ファイルã®ä¸ã®å…¨ã¦ã®æ¤œç´¢èªžå¥ã‚’ç½®æ›ã™ã‚‹ã€‚ :%s/old/new/g 'c' ã‚’åŠ ãˆã‚‹ã¨ç½®æ›ã®åº¦ã«ç¢ºèªã‚’求ã‚る。 :%s/old/new/gc - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 5.1: 外部コマンドを実行ã™ã‚‹æ–¹æ³• @@ -519,11 +612,11 @@ NOTE: ã“ã®æ©Ÿèƒ½ã¯æ‹¬å¼§ãŒä¸€è‡´ã—ã¦ã„ãªã„プãƒã‚°ãƒ©ãƒ をデãƒãƒƒ シェルプãƒãƒ³ãƒ—トã®ã‚ˆã†ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ä¸€è¦§ãŒè¡¨ç¤ºã•れるã¯ãšã§ã™ã€‚ ã‚‚ã—ã㯠ls ãŒå‹•ã‹ãªã„ãªã‚‰ã° :!dir を使用ã—ã¾ã—ょã†ã€‚ ----> NOTE: ã“ã®æ–¹æ³•ã«ã‚ˆã£ã¦ã‚らゆるコマンドãŒå®Ÿè¡Œã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - ----> NOTE: å…¨ã¦ã® : コマンド㯠<ENTER> を押ã—ã¦çµ‚了ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“。 - +Note: ã“ã®æ–¹æ³•ã«ã‚ˆã£ã¦ã‚らゆるコマンドãŒå®Ÿè¡Œã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã‚‚ã¡ã‚ん引数 + も与ãˆã‚‰ã‚Œã¾ã™ã€‚ +Note: å…¨ã¦ã® : コマンド㯠<ENTER> を押ã—ã¦çµ‚了ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“。 + 以é™ã§ã¯ã“ã®ã“ã¨ã«è¨€åŠã—ã¾ã›ã‚“。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -540,37 +633,38 @@ NOTE: ã“ã®æ©Ÿèƒ½ã¯æ‹¬å¼§ãŒä¸€è‡´ã—ã¦ã„ãªã„プãƒã‚°ãƒ©ãƒ をデãƒãƒƒ 3. ã§ã¯ :w TEST ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã—ょㆠ(TEST ã¯ã€é¸ã‚“ã ファイルåã§ã™)。 4. ã“れã«ã‚ˆã‚Šãƒ•ァイル全体㌠TEST ã¨ã„ã†åå‰ã§ä¿å˜ã•れã¾ã™ã€‚ - ã‚‚ã†ä¸€åº¦ :!dir ã¨ã‚¿ã‚¤ãƒ—ã—ã¦ç¢ºèªã—ã¦ã¿ã¾ã—ょã†ã€‚ + ã‚‚ã†ä¸€åº¦ :!dir ã‚‚ã—ã㯠!ls ã¨ã‚¿ã‚¤ãƒ—ã—ã¦ç¢ºèªã—ã¦ã¿ã¾ã—ょã†ã€‚ ----> ã“ã“ã§ Vim を終了ã—ã€ãƒ•ァイルå TEST ã¨å…±ã«èµ·å‹•ã™ã‚‹ã¨ã€ä¿å˜ã—ãŸæ™‚ã® +Note: ã“ã“ã§ Vim を終了ã—ã€ãƒ•ァイルå TEST ã¨å…±ã«èµ·å‹•ã™ã‚‹ã¨ã€ä¿å˜ã—ãŸæ™‚ã® ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã®è¤‡è£½ãŒã§ã上ãŒã‚‹ã¯ãšã§ã™ã€‚ - 5. ã§ã¯ã€ :!del TEST ã¨ã‚¿ã‚¤ãƒ—ã—ã¦ãƒ•ァイルを削除ã—ã¦ã¿ã¾ã—ょã†ã€‚ - + 5. ã•らã«ã€æ¬¡ã®ã‚ˆã†ã«ã‚¿ã‚¤ãƒ—ã—ã¦ãƒ•ァイルを消ã—ã¾ã—ょã†(MS-DOS): :!del TEST + ã‚‚ã—ãã¯(Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 5.3: é¸æŠžã—ãŸæ›¸ã込㿠- ** 部分的ã«ä¿å˜ã™ã‚‹ã«ã¯ :#,# w ファイルå ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ ** +** ファイルã®ä½ç½®ã‚’ä¿å˜ã™ã‚‹ã«ã¯ã€v モーション㨠:w FILENAME をタイプã—ã¾ã™ã€‚ ** - 1. ã‚‚ã†ä¸€åº¦ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ä¸€è¦§ã‚’å–å¾—ã™ã‚‹ãŸã‚ã« :!ls ã¨ã‚¿ã‚¤ãƒ—ã—ã€TEST ã®æ§˜ã« - ファイルを一ã¤é¸ã‚“ã§ã¿ã¾ã—ょã†ã€‚ + 1. ã“ã®è¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã™ã€‚ - 2. ã“ã®ãƒšãƒ¼ã‚¸ã®å§‹ã‚ã¾ã§ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã€ãƒ•ァイルã®è¡Œæ•°ã‚’知るãŸã‚ã« Ctrl-g 㨠- タイプã—ã¾ã—ょã†ã€‚ãã®è¡Œç•ªå·ã‚’憶ãˆã¦ãŠãã¾ã—ょã†ã€‚ + 2. v を押ã—ã€ä»¥ä¸‹ã®ç¬¬5é …ç›®ã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã™ã€‚テã‚ストãŒå¼·èª¿è¡¨ç¤ºã•れる㮠+ ã«æ³¨ç›®ã—ã¦ä¸‹ã•ã„。 - 3. ãã—ã¦ãƒšãƒ¼ã‚¸ã®çµ‚りã¾ã§ç§»å‹•ã—ã€å†åº¦ Ctrl-g を行ã„ã¾ã™ã€‚ - ã“ã®è¡Œç•ªå·ã‚‚憶ãˆã¦ãŠãã¾ã—ょã†ã€‚ + 3. æ–‡å— : を押ã™ã¨ã€ç”»é¢ã®æœ€ä¸‹éƒ¨ã« :'<,'> ãŒç¾ã‚Œã¾ã™ã€‚ - 4. ã‚る部分ã ã‘ã‚’ TEST ã¨ã„ã†åã§ä¿å˜ã™ã‚‹ãŸã‚ã«ã€:#,# w TEST ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ã€‚ - ã“ã® #,# ã¯è¦šãˆã¦ãŠã„ãŸï¼’ã¤ã®ç•ªå·(上端,下端) ã§ã‚り〠TEST ãŒãƒ•ァイルå - ã¨ãªã‚Šã¾ã™ã€‚ + 4. w TEST (TESET ã¯å˜åœ¨ã—ãªã„ファイルå)をタイプã—ã¾ã™ã€‚ + Enter を押ã™å‰ã« :'<,'>w TEST ã¨ãªã£ã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ä¸‹ã•ã„。 - 5. å†åº¦ã€ãƒ•ァイルãŒå˜åœ¨ã™ã‚‹ã“ã¨ã‚’確èªã™ã‚‹ãŸã‚ã« :!dir ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã—ょã†ã€‚ - ãŸã ã—ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ¶ˆã—ã¦ã¯ã„ã‘ã¾ã›ã‚“。 + 5. Vim 㯠TEST ã¨ã„ã†ãƒ•ァイルã«é¸æŠžã•れãŸè¡Œã‚’書ã込むã§ã—ょã†ã€‚ + !dir ã‚‚ã—ã㯠!ls ã§ãれを確èªã—ã¾ã™ã€‚ + ãれã¯å‰Šé™¤ã—ãªã„ã§ãŠã„ã¦ä¸‹ã•ã„。次ã®ãƒ¬ãƒƒã‚¹ãƒ³ã§ä½¿ç”¨ã—ã¾ã™ã€‚ +NOTE: v を押ã™ã¨ã€Visual é¸æŠžãŒå§‹ã¾ã‚Šã¾ã™ã€‚カーソルを動ã‹ã™ã“ã¨ã§ã€é¸æŠžç¯„囲を + 大ããã‚‚å°ã•ãã‚‚ã§ãã¾ã™ã€‚ã•らã«ã€ãã®é¸æŠžç¯„囲ã«å¯¾ã—ã¦ã‚ªãƒšãƒ¬ãƒ¼ã‚¿ã‚’é©ç”¨ + ãã¾ã™ã€‚例ãˆã° d ã¯ãƒ†ã‚ストを削除ã—ã¾ã™ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 5.4: ファイルã®å–è¾¼ã¨åˆä½µ @@ -578,21 +672,21 @@ NOTE: ã“ã®æ©Ÿèƒ½ã¯æ‹¬å¼§ãŒä¸€è‡´ã—ã¦ã„ãªã„プãƒã‚°ãƒ©ãƒ をデãƒãƒƒ ** ファイルã®ä¸èº«ã‚’挿入ã™ã‚‹ã«ã¯ :r ファイルå ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ ** - 1. å…ˆã»ã©ã® TEST ã¨ã„ã†ãƒ•ァイルãŒå˜åœ¨ã™ã‚‹ã“ã¨ã‚’確ã‹ã‚ã‚‹ãŸã‚ã« :!dir 㨠- タイプã—ã¾ã—ょã†ã€‚ + 1. カーソルを以下ã®è¡Œã«åˆã‚ã›ã¾ã™ã€‚ - 2. カーソルをã“ã®ãƒšãƒ¼ã‚¸ã®å…ˆé ã«ç§»å‹•ã—ã¾ã™ã€‚ +NOTE: ステップ 2 ã®å®Ÿè¡Œå¾Œã€ãƒ¬ãƒƒã‚¹ãƒ³ 5.3 ã®ãƒ†ã‚ストãŒç¾ã‚Œã¾ã™ã€‚下ã«ä¸‹ãŒã£ã¦ã“ + ã®ãƒ¬ãƒƒã‚¹ãƒ³ã«ç§»å‹•ã—ã¾ã—ょã†ã€‚ -NOTE: ステップ 3 を実行ã™ã‚‹ã¨ã€ç”»é¢ã« レッスン 5.3 ãŒç¾ã‚れるã®ã§ã€ã‚«ãƒ¼ã‚½ãƒ«ã‚’ - 下ã«ç§»å‹•ã—ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã¾ã§æˆ»ã‚Šã¾ã—ょã†ã€‚ + 2. ã§ã¯ TEST ã¨ã„ã†ãƒ•ァイルを :r TEST ã¨ã„ã†ã‚³ãƒžãƒ³ãƒ‰ã§èªã¿è¾¼ã¿ã¾ã—ょã†ã€‚ + ã“ã“ã§ã„ㆠTEST ã¯ä½¿ã†ãƒ•ァイルã®åå‰ã®ã“ã¨ã§ã™ã€‚ + èªã¿è¾¼ã¾ã‚ŒãŸãƒ•ァイルã¯ã€ã‚«ãƒ¼ã‚½ãƒ«è¡Œã®ä¸‹ã«ã‚りã¾ã™ã€‚ - 3. ã§ã¯ã€:r TEST ã¨ã‚¿ã‚¤ãƒ—ã—㦠TEST ファイルをå–è¾¼ã¿ã¾ã—ょã†ã€‚ã“ã® TEST 㯠- ファイルåã§ã™ã€‚ + 3. å–込んã ファイルを確èªã—ã¦ã¿ã¾ã—ょã†ã€‚カーソルを戻ã™ã¨ã€ãƒ¬ãƒƒã‚¹ãƒ³5.3 ã® + オリジナルã¨ãƒ•ァイルã«ã‚ˆã‚‹ã‚‚ã®ã®2ã¤ãŒã‚ã‚‹ã“ã¨ãŒã‚ã‹ã‚Šã¾ã™ã€‚ -NOTE: ファイルã®å–è¾¼ã¿ã¯ã‚«ãƒ¼ã‚½ãƒ«ã®ä½ç½®ã‹ã‚‰è¡Œã‚れã¾ã™ã€‚ +NOTE: 外部コマンドã®å‡ºåŠ›ã‚’èªã¿è¾¼ã‚€ã“ã¨ã‚‚出æ¥ã¾ã™ã€‚例ãˆã°ã€ + :r !ls 㯠ls コマンドã®å‡ºåŠ›ã‚’ã‚«ãƒ¼ã‚½ãƒ«ä»¥ä¸‹ã«èªã¿è¾¼ã¿ã¾ã™ã€‚ - 4. å–込んã ファイルを確èªã—ã¦ã¿ã¾ã—ょã†ã€‚カーソルを戻ã™ã¨ã€ãƒ¬ãƒƒã‚¹ãƒ³5.3 ã® - オリジナルã¨ãƒ•ァイルã«ã‚ˆã‚‹ã‚‚ã®ã®2ã¤ãŒã‚ã‚‹ã“ã¨ãŒã‚ã‹ã‚Šã¾ã™ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -602,19 +696,19 @@ NOTE: ファイルã®å–è¾¼ã¿ã¯ã‚«ãƒ¼ã‚½ãƒ«ã®ä½ç½®ã‹ã‚‰è¡Œã‚れã¾ã™ã€‚ 1. :!command ã«ã‚ˆã£ã¦ 外部コマンドを実行ã—ã¾ã™ã€‚ よã使ã†ä¾‹: - :!ls - ディレクトリã®ãƒ•ァイル一覧を見る。 - :!del ファイルå - ファイルåã¨ã„ã†ãƒ•ァイルã®å‰Šé™¤ã™ã‚‹ã€‚ + (MS-DOS) (Unix) + :!dir :!ls - ディレクトリ内ã®ä¸€è¦§ã‚’見る。 + :!del FILENAME :!rm FILENAME - ファイルを削除ã™ã‚‹ã€‚ 2. :w ファイルå ã«ã‚ˆã£ã¦ãƒ•ァイルåã¨ã„ã†ãƒ•ァイルãŒãƒ‡ã‚£ã‚¹ã‚¯ã«æ›¸ãè¾¼ã¾ã‚Œã‚‹ã€‚ - 3. :#,# w ファイルå ã«ã‚ˆã£ã¦ # ã‹ã‚‰ # ã¾ã§ã‚’ä¿å˜ã™ã‚‹ã€‚ + 3. v モーション㧠:w FILENAME ã¨ã™ã‚‹ã¨ã€ãƒ“ã‚¸ãƒ¥ã‚¢ãƒ«é¸æŠžè¡ŒãŒãƒ•ァイルã«ä¿å˜ã• + れる。 4. :r ファイルå ã«ã‚ˆã‚Šãƒ•ァイルåã¨ã„ã†ãƒ•ァイルãŒãƒ‡ã‚£ã‚¹ã‚¯ã‚ˆã‚Šå–è¾¼ã¾ã‚Œã€ カーソルä½ç½®ã®ä¸‹ã«æŒ¿å…¥ã•れる。 - - - + 5. :r !dir 㯠dir コマンドã®å‡ºåŠ›ã‚’ã‚«ãƒ¼ã‚½ãƒ«ä½ç½®ä»¥ä¸‹ã«èªã¿è¾¼ã‚€ã€‚ @@ -624,18 +718,18 @@ NOTE: ファイルã®å–è¾¼ã¿ã¯ã‚«ãƒ¼ã‚½ãƒ«ã®ä½ç½®ã‹ã‚‰è¡Œã‚れã¾ã™ã€‚ ** o をタイプã™ã‚‹ã¨ã€ã‚«ãƒ¼ã‚½ãƒ«ã®ä¸‹ã®è¡ŒãŒé–‹ãã€æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã«å…¥ã‚Šã¾ã™ ** - 1. 以下㮠---> ã¨è¨˜ã•れãŸã•れãŸè¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ + 1. 以下㮠---> ã¨ç¤ºã•れãŸè¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ 2. o (å°æ–‡å—) をタイプã—ã¦ã€ã‚«ãƒ¼ã‚½ãƒ«ã®ä¸‹ã®è¡Œã‚’é–‹ãã€æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã«å…¥ã‚Šã¾ã™ã€‚ - 3. ---> ã¨è¨˜ã•れãŸè¡Œã‚’写ã—ã€<ESC> ã¨ã‚¿ã‚¤ãƒ—ã—ã¦è¿½åŠ ãƒ¢ãƒ¼ãƒ‰ã‚’çµ‚äº†ã—ã¾ã—ょã†ã€‚ + 3. ã•ã‚‰ã«æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã‚’終了ã™ã‚‹ç‚ºã« <ESC> をタイプã—ã¾ã™ã€‚ ---> o をタイプã™ã‚‹ã¨ã‚«ãƒ¼ã‚½ãƒ«ã¯é–‹ã„ãŸè¡Œã¸ç§»å‹•ã—æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã«å…¥ã‚Šã¾ã™ã€‚ 4. カーソルã®ä¸Šã®è¡Œã«æŒ¿å…¥ã™ã‚‹ã«ã¯ã€å°æ–‡å—ã® o ã§ã¯ãªãã€å˜ç´”ã«å¤§æ–‡å—ã® O をタイプã—ã¾ã™ã€‚次ã®è¡Œã§è©¦ã—ã¦ã¿ã¾ã—ょã†ã€‚ -ã“ã®è¡Œã®ä¸Šã¸æŒ¿å…¥ã™ã‚‹ã«ã¯ã€ã“ã®è¡Œã¸ã‚«ãƒ¼ã‚½ãƒ«ã‚’ç½®ã„㦠Shift-O をタイプã—ã¾ã™ã€‚ +---> ã“ã®è¡Œã®ä¸Šã¸æŒ¿å…¥ã™ã‚‹ã«ã¯ã€ã“ã®è¡Œã¸ã‚«ãƒ¼ã‚½ãƒ«ã‚’ç½®ã„㦠O をタイプã—ã¾ã™ã€‚ @@ -647,94 +741,118 @@ NOTE: ファイルã®å–è¾¼ã¿ã¯ã‚«ãƒ¼ã‚½ãƒ«ã®ä½ç½®ã‹ã‚‰è¡Œã‚れã¾ã™ã€‚ ** ã‚«ãƒ¼ã‚½ãƒ«ã®æ¬¡ã®ä½ç½®ã‹ã‚‰ãƒ†ã‚ã‚¹ãƒˆã‚’è¿½åŠ ã™ã‚‹ã«ã¯ a ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ ** - 1. ノーマルモードã«ã—ã¦ä»¥ä¸‹ã® ---> ã¨è¨˜ã•れãŸã•ã‚ŒãŸæœ€åˆã®è¡Œã§ $ をタイプ㗠- ã¦ã€çµ‚端ã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ + 1. カーソルを ---> ã§ç¤ºã•ã‚ŒãŸæ¥ã¸ç§»å‹•ã—ã¾ã—ょã†ã€‚ - 2. ã‚«ãƒ¼ã‚½ãƒ«ã®æ–‡å—ã®å¾Œã‚ã«ãƒ†ã‚ã‚¹ãƒˆã‚’è¿½åŠ ã™ã‚‹ãŸã‚ã« a (å°æ–‡å—) をタイプã—ã¾ - ã™ã€‚ + 2. e を押ã—㦠li ã®çµ‚端部ã¾ã§ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã™ã€‚ -NOTE: ã“ã‚Œã¯æœ€å¾Œã®æ–‡å—ã«ã¦ãƒ†ã‚ストを挿入ã—ã€<ESC> をタイプã—ã¦ã‚«ãƒ¼ã‚½ãƒ«ã‚’å³ã« - 移動ã—ã€æœ€å¾Œã« x タイプã—ã¦è¡Œæœ«ã«è¿½åŠ ã™ã‚‹ã¨ã„ã£ãŸã‚ˆã†ãª i ã®ã‚¿ã‚¤ãƒ—ã‚’ - é¿ã‘ã‚‹ã“ã¨ãŒãã¾ã™ã€‚ + 3. カーソルã®å¾Œã‚ã«ãƒ†ã‚ã‚¹ãƒˆã‚’è¿½åŠ ã™ã‚‹ãŸã‚ã« a (å°æ–‡å—) をタイプã—ã¾ã™ã€‚ - 3. ã•ã¦æœ€åˆã®è¡Œã‚’完æˆã—ã¾ã—ょã†ã€‚テã‚ã‚¹ãƒˆãŒæŒ¿å…¥ã•れるä½ç½®ã‚’除ã‘ã°ã€ - è¿½åŠ ã‚³ãƒžãƒ³ãƒ‰ã¯æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã¨ã¾ã£ãŸãåŒã˜ã§ã™ã€‚ + 4. ãã®ä¸‹ã®è¡Œã®ã®ã‚ˆã†ãªå˜èªžã«å®Œæˆã•ã›ã¾ã™ã€‚挿入モードを抜ã‘る為㫠<ESC> ã«æŠ¼ + ã—ã¾ã™ã€‚ ----> ã“ã®è¡Œã§ã€è¡Œæœ«ã«æ–‡ç« ã‚’è¿½åŠ ã™ã‚‹ ----> ã“ã®è¡Œã§ã€è¡Œæœ«ã«æ–‡ç« ã‚’è¿½åŠ ã™ã‚‹ç·´ç¿’ã‚’ã™ã‚‹ã“ã¨ãŒã§ãã‚‹ã§ã—ょã†ã€‚ + 5. e を使ã£ã¦æ¬¡ã®ä¸å®Œå…¨ãªå˜èªžã¸ç§»å‹•ã—ã€ã‚¹ãƒ†ãƒƒãƒ— 3 㨠4 を繰り返ã—ã¾ã™ã€‚ + +---> This li will allow you to pract appendi text to a line. +---> This line will allow you to practice appending text to a line. +Note: a, i 㨠A ã¯åŒã˜æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã¸ç§»ã‚Šã¾ã™ãŒã€æ–‡å—ãŒæŒ¿å…¥ã•れるä½ç½®ã ã‘ãŒç•°ãªã‚Š + ã¾ã™ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 6.3: ãã®ä»–ã®ç½®æ› + レッスン 6.3: ãã®ä»–ã®ç½®æ›æ–¹æ³• ** 1æ–‡å—ä»¥ä¸Šã‚’ç½®ãæ›ãˆã‚‹ã«ã¯å¤§æ–‡å—ã® R ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã—ょㆠ** - 1. 以下㮠---> ã¨è¨˜ã•れãŸã•れãŸè¡Œã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ - - 2. ---> ã¨è¨˜ã•れãŸï¼’行目ã¨é•ã†ã€æœ€åˆã®å˜èªžã®å…ˆé ã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ - (å˜èªž 'last') + 1. 以下㮠---> ã¨ç¤ºã•ã‚ŒãŸæ¥ã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã™ã€‚最åˆã® xxx ã®å…ˆé ã«ç§»å‹•ã— + ã¾ã™ã€‚ - 3. ã“ã“ã§ R をタイプã—ã¦ã€æœ€åˆã®è¡Œã¨æ¬¡ã®è¡ŒãŒåŒã˜ã«ãªã‚‹ã‚ˆã†ã«æ—¢å˜ã®ãƒ†ã‚スト - ã¸ä¸Šæ›¸ãタイプã—ã€ï¼‘è¡Œç›®ã®æ®‹ã‚Šã®éƒ¨åˆ†ã‚’æ›¸ãæ›ãˆã¾ã—ょã†ã€‚ + 2. R を押ã—ã¦ã€2è¡Œç›®ã®æ•°å€¤ã‚’タイプã™ã‚‹ã“ã¨ã§ã€xxx ãŒç½®æ›ã•れã¾ã™ã€‚ ----> To make the first line the same as the last on this page use the keys. ----> To make the first line the same as the second, type R and the new text. + 3. ç½®æ›ãƒ¢ãƒ¼ãƒ‰ã‚’抜ã‘ã‚‹ã«ã¯ <ESC> を押ã—ã¾ã™ã€‚è¡Œã®æ®‹ã‚ŠãŒå¤‰æ›´ã•れã¦ã„ãªã„ã¾ã¾ã« + ãªã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - 4. モードを抜ã‘ã‚‹ãŸã‚ã« <ESC> をタイプã™ã‚‹ã¨ã€å¤‰æ›´ã—ã¦ã„ãªã„éƒ¨åˆ†ãŒæ®‹ã‚‹ã“㨠- ã«æ³¨æ„ã—ã¾ã—ょã†ã€‚ + 5. 残ã£ãŸ xxx をステップを繰り返ã—ã¦ç½®æ›ã—ã¾ã—ょã†ã€‚ +---> Adding 123 to xxx gives you xxx. +---> Adding 123 to 456 gives you 579. +NOTE: ç½®æ›ãƒ¢ãƒ¼ãƒ‰ã¯æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã«ä¼¼ã¦ã„ã¾ã™ãŒã€å…¨ã¦ã®ã‚¿ã‚¤ãƒ—ã•ã‚ŒãŸæ–‡å—ã¯æ—¢å˜ã®æ–‡å— + を削除ã—ã¾ã™ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 6.4: オプションã®è¨å®š + レッスン 6.4: テã‚ストã®ã‚³ãƒ”ーã¨ãƒšãƒ¼ã‚¹ãƒˆ + + ** テã‚ストã®ã‚³ãƒ”ーã«ã¯ã‚ªãƒšãƒ¬ãƒ¼ã‚¿ y ã‚’ã€ãƒšãƒ¼ã‚¹ãƒˆã«ã¯ p を使ã„ã¾ã™ ** - ** 検索や置æ›ã®éš›ã«å¤§æ–‡å—ã¨å°æ–‡å—を無視ã™ã‚‹æ§˜ã«ã‚ªãƒ—ションをè¨å®šã—ã¾ã™ ** + 1. ---> ã¨ç¤ºã•れãŸè¡Œã¸ç§»å‹•ã—ã€ã‚«ãƒ¼ã‚½ãƒ«ã‚’ "a)" ã®å¾Œã«ç½®ã„ã¦ãŠãã¾ã™ã€‚ + + 2. v ã§ãƒ“ジュアルモードを開始ã—ã€"first"ã®æ‰‹å‰ã¾ã§ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã™ã€‚ + + 3. y をタイプã—ã¦å¼·èª¿è¡¨ç¤ºã•れãŸãƒ†ã‚ストを yank (コピー)ã—ã¾ã™ã€‚ + 4. 次ã®è¡Œã®è¡Œæœ«ã¾ã§ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã™: j$ - 1. ä»¥ä¸‹ã®æ§˜ã«ã‚¿ã‚¤ãƒ—ã—㦠'ignore' を検索ã—ã¾ã—ょã†: - /ignore + 5. p を押ã—ã¦è²¼ã‚Šä»˜ã‘(put)ã¦ã‹ã‚‰ã€æ¬¡ã‚’タイプã—ã¾ã™: a second <ESC> + + 6. ビジュアルモード㧠" item." ã‚’é¸æŠžã—ã€y ã§ãƒ¤ãƒ³ã‚¯ã€æ¬¡ã®è¡Œã®è¡Œæœ«ã¾ã§ j$ ã§ + 移動ã—〠p ã§ãƒ†ã‚ストをãã“ã« put ã—ã¾ã™ã€‚ + +---> a) this is the first item. + b) + + Note: å˜èªžã‚’1㤠yank ã™ã‚‹ã®ã« y をオペレータã¨ã—㦠yw ã¨ã™ã‚‹ã“ã¨ã‚‚出æ¥ã¾ã™ã€‚ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 6.5: オプションã®è¨å®š + + + ** 検索や置æ›ã®éš›ã«å¤§æ–‡å—/å°æ–‡å—を無視ã™ã‚‹ã«ã¯ã€ã‚ªãƒ—ションをè¨å®šã—ã¾ã™ ** + + 1. æ¬¡ã®æ§˜ã«å…¥åŠ›ã—㦠'ignore' を検索ã—ã¾ã—ょã†: /ignore <ENTER> n を押ã—ã¦ä½•åº¦ã‹æ¤œç´¢ã‚’繰り返ã—ã¾ã™ã€‚ - 2. ä»¥ä¸‹ã®æ§˜ã«ã‚¿ã‚¤ãƒ—ã—㦠'ic' (Ignore Case ã®ç•¥ã§ã™) オプションをè¨å®šã—ã¾ã™ã€‚ - :set ic + 2. æ¬¡ã®æ§˜ã«å…¥åŠ›ã—㦠'ic' (Ignore Case ã®ç•¥) オプションをè¨å®šã—ã¾ã™: :set ic 3. ã§ã¯ n ã«ã‚ˆã£ã¦ã‚‚ã†1度 'ignore' を検索ã—ã¾ã™ã€‚ n を押ã—ã¦ã•ã‚‰ã«æ•°å›žæ¤œç´¢ã‚’繰り返ã—ã¾ã—ょã†ã€‚ - 4. 'hlsearch' 㨠'incsearch' ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’ä»¥ä¸‹ã®æ§˜ã«è¨å®šã—ã¾ã—ょã†ã€‚ - :set hls is + 4. 'hlsearch' 㨠'incsearch' オプションをè¨å®šã—ã¾ã—ょã†: :set hls is + + 5. 検索コマンドをå†å…¥åŠ›ã—ã¦ã€ä½•ãŒèµ·ã“ã‚‹ã‹è¦‹ã¦ã¿ã¾ã—ょã†: /ignore <ENTER> - 5. ã‚‚ã†ä¸€åº¦æ¤œç´¢ã‚³ãƒžãƒ³ãƒ‰ã‚’入力ã—ã¦ã€ä½•ãŒèµ·ã“ã‚‹ã‹è¦‹ã¦ã¿ã¾ã—ょã†: - /ignore + 6. 大文å—å°æ–‡å—ã®åŒºåˆ¥ã‚’無効ã«ã™ã‚‹ã«ã¯æ¬¡ã®æ§˜ã«å…¥åŠ›ã—ã¾ã™: :set noic +Note: マッãƒã®å¼·èª¿è¡¨ç¤ºã‚’ã‚„ã‚ã‚‹ã«ã¯æ¬¡ã®æ§˜ã«å…¥åŠ›ã—ã¾ã™: :nohlsearch +Note: 1ã¤ã®æ¤œç´¢ã‚³ãƒžãƒ³ãƒ‰ã ã‘大文å—å°æ–‡å—ã®åŒºåˆ¥ã‚’ã‚„ã‚ãŸã„ãªã‚‰ã°ã€ãƒ•レーズ㫠\c + を使用ã—ã¾ã™: /ignore\c <ENTER> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 6 è¦ç´„ - 1. o をタイプã™ã‚‹ã¨ã‚«ãƒ¼ã‚½ãƒ«ã®ä¸‹ã®è¡Œã‚’é–‹ã‘ã¦ã€ãã“ã§æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã«ãªã‚‹ã€‚ O (大文å—) をタイプã™ã‚‹ã¨ã‚«ãƒ¼ã‚½ãƒ«ã®ä¸Šã®è¡Œã§æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã«ãªã‚‹ã€‚ 2. ã‚«ãƒ¼ã‚½ãƒ«ä¸Šã®æ–‡å—ã®æ¬¡ã‹ã‚‰ãƒ†ã‚ã‚¹ãƒˆã‚’è¿½åŠ ã™ã‚‹ã«ã¯ a ã¨ã‚¿ã‚¤ãƒ—ã™ã‚‹ã€‚ 行末ã«è‡ªå‹•ã§ãƒ†ã‚ストを挿入ã™ã‚‹ã«ã¯å¤§æ–‡å— A をタイプã™ã‚‹ã€‚ - 3. 大文å—ã® R をタイプã™ã‚‹ã¨ç½®æ›ãƒ¢ãƒ¼ãƒ‰ã«å…¥ã‚Šã€<ESC>を押ã™ã¨æŠœã‘る。 - - 4. ":set xxx" ã¨ã‚¿ã‚¤ãƒ—ã™ã‚‹ã¨ã‚ªãƒ—ション "xxx" ãŒè¨å®šã•れる。 - - - - - + 3. e コマンドã¯å˜èªžã®çµ‚端部カーソルを移動ã™ã‚‹ã€‚ + 4. y オペレータã¯ãƒ†ã‚ストを yank (コピー)ã—ã€p ã¯ãれを put (ペースト)ã™ã‚‹ã€‚ + 5. 大文å—ã® R をタイプã™ã‚‹ã¨ç½®æ›ãƒ¢ãƒ¼ãƒ‰ã«å…¥ã‚Šã€<ESC>を押ã™ã¨æŠœã‘る。 + 6. ":set xxx" ã¨ã‚¿ã‚¤ãƒ—ã™ã‚‹ã¨ã‚ªãƒ—ション "xxx" ãŒè¨å®šã•れる。 + 'ic' 'ignorecase' 検索時ã«å¤§æ–‡å—å°æ–‡å—ã®åŒºåˆ¥ã—ãªã„ + 'is' 'incsearch' 検索フレーズã«éƒ¨åˆ†ãƒžãƒƒãƒã—ã¦ã„る部分を表示ã™ã‚‹ + 'hls' 'hlsearch' マッãƒã™ã‚‹ã™ã¹ã‚’強調表示ã™ã‚‹ + é•·ã„æ–¹ã€çŸã„æ–¹ã€ã©ã¡ã‚‰ã®ã‚ªãƒ—ションåã§ã‚‚使用ã§ãã¾ã™ã€‚ + 7. "no" を付与ã—ã€ã‚ªãƒ—ションを無効ã«ã—ã¾ã™: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 7: オンラインヘルプコマンド + レッスン 7.1: オンラインヘルプコマンド + ** オンラインヘルプを使用ã—ã¾ã—ょㆠ** @@ -744,20 +862,19 @@ NOTE: ã“ã‚Œã¯æœ€å¾Œã®æ–‡å—ã«ã¦ãƒ†ã‚ストを挿入ã—ã€<ESC> をタイ - <F1> ã‚ーを押ã™(ã‚‚ã—ã‚ã‚‹ãªã‚‰ã°)。 - :help <ENTER> ã¨ã‚¿ã‚¤ãƒ—ã™ã‚‹ã€‚ - ヘルプウィンドウを閉ã˜ã‚‹ã«ã¯ :q <ENTER> ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ã€‚ + ヘルプウィンドウã®ãƒ†ã‚ストをèªã‚€ã¨ã€ãƒ˜ãƒ«ãƒ—ã®å‹•作ãŒç†è§£ã§ãã¾ã™ã€‚ + CTRL-W CTRL-W ã¨ã‚¿ã‚¤ãƒ—ã™ã‚‹ã¨ ヘルプウィンドウã¸ã‚¸ãƒ£ãƒ³ãƒ—ã—ã¾ã™ã€‚ + :q <ENTER> ã¨ã‚¿ã‚¤ãƒ—ã™ã‚‹ã¨ ヘルプウィンドウãŒé–‰ã˜ã‚‰ã‚Œã¾ã™ã€‚ - ":help" コマンドã«å¼•数を与ãˆã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ã‚らゆる題åã®ãƒ˜ãƒ«ãƒ—を見ã¤ã‘ã‚‹ - ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れらを試ã—ã¦ã¿ã¾ã—ょã†(<ENTER> をタイプã—忘れãªã„よã†ã«): + ":help" コマンドã«å¼•数を与ãˆã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ã‚らゆる題åã®ãƒ˜ãƒ«ãƒ—を見ã¤ã‘ã‚‹ã“㨠+ ãŒã§ãã¾ã™ã€‚ã“れらを試ã—ã¦ã¿ã¾ã—ょã†(<ENTER> をタイプã—忘れãªã„よã†ã«): :help w :help c_<T :help insert-index :help user-manual - - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 8: 起動スクリプトã®ä½œæˆ + レッスン 7.2: 起動スクリプトã®ä½œæˆ ** Vim ã®ç‰¹å¾´ã‚’発æ®ã™ã‚‹ ** @@ -770,15 +887,61 @@ NOTE: ã“ã‚Œã¯æœ€å¾Œã®æ–‡å—ã«ã¦ãƒ†ã‚ストを挿入ã—ã€<ESC> をタイ :edit $VIM/_vimrc MS-Windows å‘ã‘ 2. ã“ã“ã§ã‚µãƒ³ãƒ—ル㮠"vimrc" ã‚’èªã¿è¾¼ã¿ã¾ã™ã€‚ - :read $VIMRUNTIME/vimrc_example.vim 3. 以下ã®ã‚ˆã†ã«ãƒ•ã‚¡ã‚¤ãƒ«ã¸æ›¸ãè¾¼ã¿ã¾ã™ã€‚ - :write 次回 Vim ã‚’èµ·å‹•ã™ã‚‹ã¨ã€è‰²ã¥ã‘æ§‹æ–‡ãŒä½¿ãˆã‚‹ã‚ˆã†ã«ãªã‚‹ã§ã—ょã†ã€‚ ã“ã® "vimrc" ファイルã¸ã€ãŠå¥½ã¿ã®è¨å®šã‚’è¿½åŠ ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + より多ãã®æƒ…å ±ã‚’å¾—ã‚‹ã«ã¯ :help vimrc-intro ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ã€‚ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 7.3: 補完 + + + ** CTRL-D 㨠<TAB> ã§ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚’補完ã™ã‚‹ ** + + 1. コンパãƒãƒ¢ãƒ¼ãƒ‰ã§ãªã„ã“ã¨ã‚’確èªã—ã¾ã™: :set nocp + + 2. ç¾åœ¨ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«åœ¨ã‚‹ãƒ•ァイルを :!ls ã‹ :!dir ã§ç¢ºèªã—ã¾ã™ã€‚ + + 3. コマンドã®é–‹å§‹ã‚’タイプã—ã¾ã™: :e + + 4. CTRL-D を押ã™ã¨ Vim 㯠"e" ã‹ã‚‰å§‹ã¾ã‚‹ã‚³ãƒžãƒ³ãƒ‰ã®ä¸€è¦§ã‚’表示ã—ã¾ã™ã€‚ + + 5. <TAB> を押ã™ã¨ Vim 㯠":edit" ã¨ã„ã†ã‚³ãƒžãƒ³ãƒ‰åを補完ã—ã¾ã™ã€‚ + + 6. ã•らã«ç©ºç™½ã¨ã€æ—¢å˜ã®ãƒ•ァイルåã®å§‹ã¾ã‚Šã‚’åŠ ãˆã¾ã™: :edit FIL + + 7. <TAB> を押ã™ã¨ Vim ã¯åå‰ã‚’補完ã—ã¾ã™ã€‚(ã‚‚ã—一ã¤ã—ã‹ç„¡ã‹ã£ãŸå ´åˆ) + +NOTE: 補完ã¯å¤šãã®ã‚³ãƒžãƒ³ãƒ‰ã§å‹•作ã—ã¾ã™ã€‚ãã—㦠CTRL-D 㨠<TAB> 押ã—ã¦ã¿ã¦ãã + ã•ã„。特㫠:help ã®éš›ã«å½¹ç«‹ã¡ã¾ã™ã€‚ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 7 è¦ç´„ + + + 1. ヘルプウィンドウを開ãã«ã¯ :help ã¨ã™ã‚‹ã‹ <F1> ã‚‚ã—ã㯠<Help> を押ã™ã€‚ + + 2. コマンド(cmd)ã®ãƒ˜ãƒ«ãƒ—を検索ã™ã‚‹ã«ã¯ :help cmd ã¨ã‚¿ã‚¤ãƒ—ã™ã‚‹ã€‚ + + 3. 別ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã¸ã‚¸ãƒ£ãƒ³ãƒ—ã™ã‚‹ã«ã¯ CTRL-W CTRL-W ã¨ã‚¿ã‚¤ãƒ—ã™ã‚‹ã€‚ + + 4. ヘルプウィンドウを閉ã˜ã‚‹ã«ã¯ :q ã¨ã‚¿ã‚¤ãƒ—ã™ã‚‹ã€‚ + + 5. ãŠå¥½ã¿ã®è¨å®šã‚’ä¿ã¤ã«ã¯ vimrc 起動スクリプトを作æˆã™ã‚‹ã€‚ + + 6. : command ã§å¯èƒ½ãªè£œå®Œã‚’見るã«ã¯ CTRL-D をタイプã™ã‚‹ã€‚ + 補完を使用ã™ã‚‹ã«ã¯ <TAB> を押ã™ã€‚ + + + + + + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ã“れã«ã¦ Vim ã®ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚’終ã‚りã¾ã™ã€‚エディタを簡å˜ã«ã€ã—ã‹ã‚‚充分㫠@@ -805,7 +968,8 @@ NOTE: ã“ã‚Œã¯æœ€å¾Œã®æ–‡å—ã«ã¦ãƒ†ã‚ストを挿入ã—ã€<ESC> をタイ Modified for Vim by Bram Moolenaar. - 日本語訳 æ¾æœ¬æ³°å¼˜ E-mail:mattn@mail.goo.ne.jp + 日本語訳 æ¾æœ¬ 泰弘 <mattn_jp@hotmail.com> + 監修 æ‘岡 太郎 <koron@tka.att.ne.jp> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - vi:set ts=8 sts=4 sw=4 tw=76: + vi:set ts=8 sts=4 sw=4 tw=78: diff --git a/src/eval.c b/src/eval.c index d29f1a4f18..8c7049be30 100644 --- a/src/eval.c +++ b/src/eval.c @@ -17258,6 +17258,7 @@ ex_function(eap) char_u *name = NULL; char_u *p; char_u *arg; + char_u *line_arg = NULL; garray_T newargs; garray_T newlines; int varargs = FALSE; @@ -17531,7 +17532,11 @@ ex_function(eap) break; } - if (*p != NUL && *p != '"' && *p != '\n' && !eap->skip && !did_emsg) + /* When there is a line break use what follows for the function body. + * Makes 'exe "func Test()\n...\nendfunc"' work. */ + if (*p == '\n') + line_arg = p + 1; + else if (*p != NUL && *p != '"' && !eap->skip && !did_emsg) EMSG(_(e_trailing)); /* @@ -17563,7 +17568,20 @@ ex_function(eap) { msg_scroll = TRUE; need_wait_return = FALSE; - if (eap->getline == NULL) + if (line_arg != NULL) + { + /* Use eap->arg, split up in parts by line breaks. */ + theline = line_arg; + p = vim_strchr(theline, '\n'); + if (p == NULL) + line_arg += STRLEN(line_arg); + else + { + *p = NUL; + line_arg = p + 1; + } + } + else if (eap->getline == NULL) theline = getcmdline(':', 0L, indent); else theline = eap->getline(':', eap->cookie, indent); @@ -17594,7 +17612,8 @@ ex_function(eap) /* Check for "endfunction". */ if (checkforcmd(&p, "endfunction", 4) && nesting-- == 0) { - vim_free(theline); + if (line_arg == NULL) + vim_free(theline); break; } @@ -17660,7 +17679,8 @@ ex_function(eap) /* Add the line to the function. */ if (ga_grow(&newlines, 1) == FAIL) { - vim_free(theline); + if (line_arg == NULL) + vim_free(theline); goto erret; } @@ -17670,12 +17690,17 @@ ex_function(eap) p = vim_strsave(theline); if (p != NULL) { - vim_free(theline); + if (line_arg == NULL) + vim_free(theline); theline = p; } ((char_u **)(newlines.ga_data))[newlines.ga_len] = theline; newlines.ga_len++; + + /* Check for end of eap->arg. */ + if (line_arg != NULL && *line_arg == NUL) + line_arg = NULL; } /* Don't define the function when skipping commands or when an error was diff --git a/src/ex_cmds.c b/src/ex_cmds.c index dff491a379..c6cdc5a502 100644 --- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -1811,15 +1811,18 @@ write_viminfo(file, forceit) /* Use mch_open() to be able to use O_NOFOLLOW and set file * protection: - * Unix: same as original file, but strip s-bit. + * Unix: same as original file, but strip s-bit. Reset umask to + * avoid it getting in the way. * Others: r&w for user only. */ #ifdef UNIX + umask_save = umask(0); fd = mch_open((char *)tempname, O_CREAT|O_EXTRA|O_EXCL|O_WRONLY|O_NOFOLLOW, (int)((st_old.st_mode & 0777) | 0600)); + (void)umask(umask_save); #else fd = mch_open((char *)tempname, - O_CREAT|O_EXTRA|O_EXCL|O_WRONLY|O_NOFOLLOW, 0600); + O_CREAT|O_EXTRA|O_EXCL|O_WRONLY|O_NOFOLLOW, 0600); #endif if (fd < 0) fp_out = NULL; @@ -3504,8 +3507,11 @@ do_ecmd(fnum, ffname, sfname, eap, newlnum, flags) /* Tell the diff stuff that this buffer is new and/or needs updating. * Also needed when re-editing the same buffer, because unloading will * have removed it as a diff buffer. */ - diff_new_buffer(); - diff_invalidate(); + if (curwin->w_p_diff) + { + diff_buf_add(curbuf); + diff_invalidate(curbuf); + } #endif if (command == NULL) diff --git a/src/ex_cmds.h b/src/ex_cmds.h index 6571ccef30..d505bff37f 100644 --- a/src/ex_cmds.h +++ b/src/ex_cmds.h @@ -880,11 +880,13 @@ EX(CMD_tags, "tags", do_tags, EX(CMD_tab, "tab", ex_tab, RANGE|NOTADR|COUNT|TRLBAR), EX(CMD_tabclose, "tabclose", ex_tabclose, - BANG|TRLBAR|CMDWIN), + RANGE|NOTADR|COUNT|BANG|TRLBAR|CMDWIN), EX(CMD_tabedit, "tabedit", ex_tabedit, BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR), EX(CMD_tabfind, "tabfind", ex_tabedit, BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR), +EX(CMD_tabonly, "tabonly", ex_tabonly, + TRLBAR|CMDWIN), EX(CMD_tabs, "tabs", ex_tabs, TRLBAR|CMDWIN), EX(CMD_tcl, "tcl", ex_tcl, diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c index 0e671c8af5..b2a9327f14 100644 --- a/src/ex_cmds2.c +++ b/src/ex_cmds2.c @@ -2232,7 +2232,7 @@ ex_listdo(eap) if (!win_valid(win)) break; win_goto(win); - win = win->w_next; + win = curwin->w_next; } #endif else if (eap->cmdidx == CMD_bufdo) diff --git a/src/globals.h b/src/globals.h index c6409b96bb..0cea5c28bf 100644 --- a/src/globals.h +++ b/src/globals.h @@ -507,11 +507,12 @@ EXTERN frame_T *topframe; /* top of the window frame tree */ #ifdef FEAT_WINDOWS /* - * Tab pages are nothing more than alternative topframes. "first_tabpage" - * points to the first one in the list, "topframe" is the current one. + * Tab pages are alternative topframes. "first_tabpage" points to the first + * one in the list, "curtab" is the current one. */ -EXTERN tabpage_T *first_tabpage; -EXTERN int redraw_tabpage INIT(= FALSE); /* redraw tab pages line */ +EXTERN tabpage_T *first_tabpage; +EXTERN tabpage_T *curtab; +EXTERN int redraw_tabline INIT(= FALSE); /* need to redraw tabline */ #endif /* diff --git a/src/main.c b/src/main.c index 1a71be9088..31c6f6fbab 100644 --- a/src/main.c +++ b/src/main.c @@ -32,6 +32,11 @@ /* Maximum number of commands from + or -c arguments. */ #define MAX_ARG_CMDS 10 +/* values for "window_layout" */ +#define WIN_HOR 1 /* "-o" horizontally split windows */ +#define WIN_VER 2 /* "-O" vertically split windows */ +#define WIN_TABS 3 /* "-p" windows on tab pages */ + /* Struct for various parameters passed between main() and other functions. */ typedef struct { @@ -65,7 +70,7 @@ typedef struct #endif #ifdef FEAT_WINDOWS int window_count; /* number of windows to use */ - int vert_windows; /* "-O" used instead of "-o" */ + int window_layout; /* 0, WIN_HOR, WIN_VER or WIN_TABS */ #endif #ifdef FEAT_CLIENTSERVER @@ -189,7 +194,6 @@ main #endif #ifdef FEAT_WINDOWS params.window_count = -1; - params.vert_windows = MAYBE; #endif #ifdef FEAT_TCL @@ -416,8 +420,8 @@ main { if (params.window_count == -1) params.window_count = 0; /* open up to 3 windows */ - if (params.vert_windows == MAYBE) - params.vert_windows = TRUE; /* use vertical split */ + if (params.window_layout == 0) + params.window_layout = WIN_VER; /* use vertical split */ } #endif @@ -1738,12 +1742,21 @@ command_line_scan(parmp) parmp->no_swap_file = TRUE; break; + case 'p': /* "-p[N]" open N tab pages */ +#ifdef FEAT_WINDOWS + /* default is 0: open window for each file */ + parmp->window_count = get_number_arg((char_u *)argv[0], + &argv_idx, 0); + parmp->window_layout = WIN_TABS; +#endif + break; + case 'o': /* "-o[N]" open N horizontal split windows */ #ifdef FEAT_WINDOWS /* default is 0: open window for each file */ parmp->window_count = get_number_arg((char_u *)argv[0], &argv_idx, 0); - parmp->vert_windows = FALSE; + parmp->window_layout = WIN_HOR; #endif break; @@ -1752,7 +1765,7 @@ command_line_scan(parmp) /* default is 0: open window for each file */ parmp->window_count = get_number_arg((char_u *)argv[0], &argv_idx, 0); - parmp->vert_windows = TRUE; + parmp->window_layout = WIN_VER; #endif break; @@ -2235,6 +2248,9 @@ create_windows(parmp) mparm_T *parmp; { #ifdef FEAT_WINDOWS + int rewind; + int done = 0; + /* * Create the number of windows that was requested. */ @@ -2246,12 +2262,17 @@ create_windows(parmp) { /* Don't change the windows if there was a command in .vimrc that * already split some windows */ - if (parmp->vert_windows == MAYBE) - parmp->vert_windows = FALSE; - if (firstwin->w_next == NULL) + if (parmp->window_layout == 0) + parmp->window_layout = WIN_HOR; + if (parmp->window_layout == WIN_TABS) + { + parmp->window_count = make_tabpages(parmp->window_count); + TIME_MSG("making tab pages"); + } + else if (firstwin->w_next == NULL) { parmp->window_count = make_windows(parmp->window_count, - parmp->vert_windows); + parmp->window_layout == WIN_VER); TIME_MSG("making windows"); } else @@ -2284,9 +2305,30 @@ create_windows(parmp) ++autocmd_no_leave; #endif #ifdef FEAT_WINDOWS - for (curwin = firstwin; curwin != NULL; curwin = W_NEXT(curwin)) -#endif + rewind = TRUE; + while (done++ < 1000) { + if (rewind) + { + if (parmp->window_layout == WIN_TABS) + goto_tabpage(1); + else + curwin = firstwin; + } + else if (parmp->window_layout == WIN_TABS) + { + if (curtab->tp_next == NULL) + break; + goto_tabpage(0); + } + else + { + if (curwin->w_next == NULL) + break; + curwin = curwin->w_next; + } + rewind = FALSE; +#endif curbuf = curwin->w_buffer; if (curbuf->b_ml.ml_mfp == NULL) { @@ -2306,7 +2348,7 @@ create_windows(parmp) check_swap_exists_action(); #endif #ifdef FEAT_AUTOCMD - curwin = firstwin; /* start again */ + rewind = TRUE; /* start again */ #endif } #ifdef FEAT_WINDOWS @@ -2316,15 +2358,18 @@ create_windows(parmp) (void)vgetc(); /* only break the file loading, not the rest */ break; } -#endif } -#ifdef FEAT_AUTOCMD - --autocmd_no_enter; - --autocmd_no_leave; #endif #ifdef FEAT_WINDOWS - curwin = firstwin; + if (parmp->window_layout == WIN_TABS) + goto_tabpage(1); + else + curwin = firstwin; curbuf = curwin->w_buffer; +#endif +#ifdef FEAT_AUTOCMD + --autocmd_no_enter; + --autocmd_no_leave; #endif } } @@ -2351,9 +2396,18 @@ edit_buffers(parmp) arg_idx = 1; for (i = 1; i < parmp->window_count; ++i) { - if (curwin->w_next == NULL) /* just checking */ - break; - win_enter(curwin->w_next, FALSE); + if (parmp->window_layout == WIN_TABS) + { + if (curtab->tp_next == NULL) /* just checking */ + break; + goto_tabpage(0); + } + else + { + if (curwin->w_next == NULL) /* just checking */ + break; + win_enter(curwin->w_next, FALSE); + } /* Only open the file if there is no file in this window yet (that can * happen when .vimrc contains ":sall") */ @@ -2375,6 +2429,9 @@ edit_buffers(parmp) break; } } + + if (parmp->window_layout == WIN_TABS) + goto_tabpage(1); # ifdef FEAT_AUTOCMD --autocmd_no_enter; # endif @@ -2383,7 +2440,7 @@ edit_buffers(parmp) --autocmd_no_leave; # endif TIME_MSG("editing files in windows"); - if (parmp->window_count > 1) + if (parmp->window_count > 1 && parmp->window_layout != WIN_TABS) win_equal(curwin, FALSE, 'b'); /* adjust heights */ } #endif /* FEAT_WINDOWS */ @@ -2825,6 +2882,7 @@ usage() main_msg(_("-U <gvimrc>\t\tUse <gvimrc> instead of any .gvimrc")); #endif main_msg(_("--noplugin\t\tDon't load plugin scripts")); + main_msg(_("-p[N]\t\tOpen N tab pages (default: one for each file)")); main_msg(_("-o[N]\t\tOpen N windows (default: one for each file)")); main_msg(_("-O[N]\t\tLike -o but split vertically")); main_msg(_("+\t\t\tStart at end of file")); diff --git a/src/misc1.c b/src/misc1.c index fc56c913a5..bcc43dafbf 100644 --- a/src/misc1.c +++ b/src/misc1.c @@ -2458,7 +2458,7 @@ changed() ml_setflags(curbuf); #ifdef FEAT_WINDOWS check_status(curbuf); - redraw_tabpage = TRUE; + redraw_tabline = TRUE; #endif #ifdef FEAT_TITLE need_maketitle = TRUE; /* set window title later */ @@ -2848,7 +2848,7 @@ unchanged(buf, ff) save_file_ff(buf); #ifdef FEAT_WINDOWS check_status(buf); - redraw_tabpage = TRUE; + redraw_tabline = TRUE; #endif #ifdef FEAT_TITLE need_maketitle = TRUE; /* set window title later */ diff --git a/src/misc2.c b/src/misc2.c index 2ff4d5c585..680202f1cd 100644 --- a/src/misc2.c +++ b/src/misc2.c @@ -962,6 +962,12 @@ free_all_mem() ++autocmd_block; /* don't want to trigger autocommands here */ +#ifdef FEAT_WINDOWS + /* close all tabs and windows */ + do_cmdline_cmd((char_u *)"tabonly!"); + do_cmdline_cmd((char_u *)"only!"); +#endif + # if defined(FEAT_SYN_HL) /* Free all spell info. */ spell_free_all(); @@ -1012,7 +1018,7 @@ free_all_mem() free_tag_stuff(); free_cd_dir(); set_expr_line(NULL); - diff_clear(); + diff_clear(curtab); clear_sb_text(); /* free any scrollback text */ /* Free some global vars. */ @@ -2792,7 +2798,7 @@ set_fileformat(t, opt_flags) #ifdef FEAT_WINDOWS /* This may cause the buffer to become (un)modified. */ check_status(curbuf); - redraw_tabpage = TRUE; + redraw_tabline = TRUE; #endif #ifdef FEAT_TITLE need_maketitle = TRUE; /* set window title later */ diff --git a/src/proto/window.pro b/src/proto/window.pro index ae6aa636ff..7fa357270b 100644 --- a/src/proto/window.pro +++ b/src/proto/window.pro @@ -7,7 +7,6 @@ int make_windows __ARGS((int count, int vertical)); void win_move_after __ARGS((win_T *win1, win_T *win2)); void win_equal __ARGS((win_T *next_curwin, int current, int dir)); void close_windows __ARGS((buf_T *buf, int keep_curwin)); -int last_window __ARGS((void)); void win_close __ARGS((win_T *win, int free_buf)); void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp)); void win_free_all __ARGS((void)); @@ -16,6 +15,7 @@ void win_init __ARGS((win_T *wp)); int win_alloc_first __ARGS((void)); void win_init_size __ARGS((void)); int win_new_tabpage __ARGS((void)); +int make_tabpages __ARGS((int maxcount)); int valid_tabpage __ARGS((tabpage_T *tpc)); tabpage_T *find_tabpage __ARGS((int n)); void goto_tabpage __ARGS((int n)); diff --git a/src/screen.c b/src/screen.c index f9ed5e17ee..928b1b01bf 100644 --- a/src/screen.c +++ b/src/screen.c @@ -394,7 +394,7 @@ update_screen(type) } redraw_cmdline = TRUE; #ifdef FEAT_WINDOWS - redraw_tabpage = TRUE; + redraw_tabline = TRUE; #endif } msg_scrolled = 0; @@ -476,7 +476,7 @@ update_screen(type) #ifdef FEAT_WINDOWS /* Redraw the tab pages line if needed. */ - if (redraw_tabpage || type >= NOT_VALID) + if (redraw_tabline || type >= NOT_VALID) draw_tabpage(); #endif @@ -706,7 +706,7 @@ updateWindow(wp) #ifdef FEAT_WINDOWS /* When the screen was cleared redraw the tab pages line. */ - if (redraw_tabpage) + if (redraw_tabline) draw_tabpage(); if (wp->w_redr_status @@ -4965,7 +4965,7 @@ redraw_statuslines() for (wp = firstwin; wp; wp = wp->w_next) if (wp->w_redr_status) win_redr_status(wp); - if (redraw_tabpage) + if (redraw_tabline) draw_tabpage(); } #endif @@ -7084,7 +7084,7 @@ screenclear2() win_rest_invalid(firstwin); redraw_cmdline = TRUE; #ifdef FEAT_WINDOWS - redraw_tabpage = TRUE; + redraw_tabline = TRUE; #endif if (must_redraw == CLEAR) /* no need to clear again */ must_redraw = NOT_VALID; @@ -8463,7 +8463,7 @@ draw_tabpage() tabpage_T *tp; int tabwidth; int col = 0; - int scol; + int scol = 0; int had_current = FALSE; int attr; win_T *wp; @@ -8475,8 +8475,9 @@ draw_tabpage() int attr_sel = hl_attr(HLF_TPS); int attr_nosel = hl_attr(HLF_TP); int attr_fill = hl_attr(HLF_TPF); + char_u *p; - redraw_tabpage = FALSE; + redraw_tabline = FALSE; if (tabpageline_height() < 1) return; @@ -8548,11 +8549,15 @@ draw_tabpage() MAXPATHL, TRUE); trans_characters(NameBuff, MAXPATHL); len = STRLEN(NameBuff); + p = NameBuff; if (len > scol - col + tabwidth - 1) /* TODO: multi-byte chars */ + { + p += len - (scol - col + tabwidth - 1); len = scol - col + tabwidth - 1; + } if (len > 0) { - screen_puts_len(NameBuff, len, 0, col, attr); + screen_puts_len(p, len, 0, col, attr); col += len; } screen_putchar(' ', 0, col++, attr); diff --git a/src/search.c b/src/search.c index 5531fb6c08..d506344653 100644 --- a/src/search.c +++ b/src/search.c @@ -4938,7 +4938,7 @@ search_line: #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) if (g_do_tagpreview != 0 - && curwin != curwin_save && win_valid(curwin_save)) + && curwin != curwin_save && win_valid(curwin_save)) { /* Return cursor to where we were */ validate_cursor(); diff --git a/src/structs.h b/src/structs.h index 6153099e6f..fac17856db 100644 --- a/src/structs.h +++ b/src/structs.h @@ -1526,6 +1526,60 @@ struct file_buffer }; + +#ifdef FEAT_DIFF +/* + * Stuff for diff mode. + */ +# define DB_COUNT 4 /* up to four buffers can be diff'ed */ + +/* + * Each diffblock defines where a block of lines starts in each of the buffers + * and how many lines it occupies in that buffer. When the lines are missing + * in the buffer the df_count[] is zero. This is all counted in + * buffer lines. + * There is always at least one unchanged line in between the diffs. + * Otherwise it would have been included in the diff above or below it. + * df_lnum[] + df_count[] is the lnum below the change. When in one buffer + * lines have been inserted, in the other buffer df_lnum[] is the line below + * the insertion and df_count[] is zero. When appending lines at the end of + * the buffer, df_lnum[] is one beyond the end! + * This is using a linked list, because the number of differences is expected + * to be reasonable small. The list is sorted on lnum. + */ +typedef struct diffblock_S diff_T; +struct diffblock_S +{ + diff_T *df_next; + linenr_T df_lnum[DB_COUNT]; /* line number in buffer */ + linenr_T df_count[DB_COUNT]; /* nr of inserted/changed lines */ +}; +#endif + +/* + * Tab pages point to the top frame of each tab page. + * Note: Most values are NOT valid for the current tab page! Use "curwin", + * "firstwin", etc. for that. "tp_topframe" is always valid and can be + * compared against "topframe" to find the current tab page. + */ +typedef struct tabpage_S tabpage_T; +struct tabpage_S +{ + tabpage_T *tp_next; /* next tabpage or NULL */ + frame_T *tp_topframe; /* topframe for the windows */ + win_T *tp_curwin; /* current window in this Tab page */ + win_T *tp_prevwin; /* previous window in this Tab page */ + win_T *tp_firstwin; /* first window in this Tab page */ + win_T *tp_lastwin; /* last window in this Tab page */ + long tp_old_Rows; /* Rows when Tab page was left */ + long tp_old_Columns; /* Columns when Tab page was left */ +#ifdef FEAT_DIFF + diff_T *tp_first_diff; + buf_T *(tp_diffbuf[DB_COUNT]); + int tp_diff_invalid; /* list of diffs is outdated */ +#endif +}; + /* * Structure to cache info for displayed lines in w_lines[]. * Each logical line has one entry. @@ -1549,22 +1603,6 @@ typedef struct w_line #endif } wline_T; -/* - * Tab pages point to the top frame of each tab page. - */ -typedef struct tabpage_S tabpage_T; -struct tabpage_S -{ - tabpage_T *tp_next; /* next tabpage or NULL */ - frame_T *tp_topframe; /* topframe for the windows */ - win_T *tp_curwin; /* current window in this Tab page */ - win_T *tp_prevwin; /* previous window in this Tab page */ - win_T *tp_firstwin; /* first window in this Tab page */ - win_T *tp_lastwin; /* last window in this Tab page */ - long tp_old_Rows; /* Rows when Tab page was left */ - long tp_old_Columns; /* Columns when Tab page was left */ -}; - /* * Windows are kept in a tree of frames. Each frame has a column (FR_COL) * or row (FR_ROW) layout or is a leaf, which has a window. diff --git a/src/version.h b/src/version.h index b00a9a1c08..80a3f61a4f 100644 --- a/src/version.h +++ b/src/version.h @@ -36,5 +36,5 @@ #define VIM_VERSION_NODOT "vim70aa" #define VIM_VERSION_SHORT "7.0aa" #define VIM_VERSION_MEDIUM "7.0aa ALPHA" -#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2006 Feb 16)" -#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2006 Feb 16, compiled " +#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2006 Feb 17)" +#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2006 Feb 17, compiled " -- GitLab