Moving around
These commands help you move around in a file:
h
Move left one character on the current line
j
Move down to the next line
k
Move up to the previous line
l
Move right one character on the current line
w
Move to the next word on the current line
e
Move to the next end of word on the current line
b
Move to the previous beginning of the word on the current line
Ctrl-f
Scroll forward one page
Ctrl-b
Scroll backward one page
If you type a number before any of these commands, then the command will be
executed that many times. This number is called a repetition count or simply count.
For example, 5h will move left five characters. You can use repetition counts with
many vi commands.
Moving to lines
The following commands help you move to specific lines in your file:
G
Moves to a specific line in your file. For example, 3G moves to line 3. With no
parameter, G moves to the last line of the file.
H
Moves relative to the top line on the screen. For example, 3H moves to the line
currently 3rd from the top of your screen.
L
Is like H, except that movement is relative to the last line on screen. Thus, 2L
moves to the second-to-last line on your screen.
Getting out of vi
One of the most useful things to know about a new editor is how to get out of it
before you do anything you shouldn't do, such as destroying an important
configuration file. You can get out of vi by saving or abandoning your changes, or by
restarting from the beginning. If these commands don't seem to work for you, you
may be in insert mode, which you will learn about in a moment. If in doubt, pressing
Esc will leave insert mode and return you to command mode where these
commands should work.
:q!
Quit editing the file and abandon all changes. This is a very common idiom for
getting out of trouble.
:w!
Write the file (whether modified or not). Attempt to overwrite existing files or
read-only or other unwritable files. You may give a filename as a parameter,
and that file will be written instead of the one your started with. It's generally
safer to omit the ! unless you know what you're doing here.
ZZ
Write the file if it has been modified. Then exit. This is a very common idiom for
normal vi exit.
:e!
Edit the current disk copy of the file. This will reload the file, abandoning
changes you have made. You may also use this if the disk copy has changed
for some other reason and you want the latest version.
:!
Run a shell command. Type the command and press Enter. When the
command completes, you will see the output and a prompt to return to vi
editing.
Notes:
1. When you type the colon (:), your cursor will move to the bottom line of
your screen where you can type in the command and any parameters.
2. If you omit the exclamation point from the above commands, you may
receive an error message such as one saying changes have not been
saved, or the output file cannot be written (for example, you are editing a
read-only file).
3. The : commands have longer forms (:quit, :write, :edit), but the longer
forms are seldom used.
vi modes
The vi editor has two modes of operation:
Command mode
In command mode, you move around the file and perform editing operations
such as searching for text, deleting text, changing text, and so on. You usually
start in command mode.
Insert mode
In insert mode, you type new text into the file at the insertion point. To return to
command mode, press the Esc (Escape) key.
These two modes determine the way the editor behaves. Anything you type in insert
mode is considered text to be inserted into the file. If you are trying to type a
command and nothing happens, or the character appears under the cursor, then you
probably forgot to press Esc to escape from insert mode.
Editing text
Now that you can open a file in vi, move around it and get out, it's time to learn how
to edit the text in the file.
Modifying text
Use the following commands when you need to insert, delete, or modify text. Note
that some of these commands have an uppercase form that is similar to the
lowercase form; see the descriptions below.
i
Enter insert mode before the character at the current position. Type your text
and press Esc to return to command mode. Use I to insert at the beginning of
the current line.
a
Enter insert mode after the character at the current position. Type your text and
press Esc to return to command mode. Use A to insert at the end of the current
line.
c
Use c to change the current character and enter insert mode to type
replacement characters.
o
Open a new line for text insertion below the current line. Use O to open a line
above the current line.
cw
Delete the remainder of the current word and enter insert mode to replace it.
Use a repetition count to replace multiple words. Use c$ to replace to end of
line.
dw
Same as for cw (and c$) above, except that insert mode is not entered.
dd
Delete the current line. Use a repetition count to delete multiple lines.
x
Delete the character at the cursor position. Use a repetition count to delete
multiple characters.
p
Put the last deleted text after the current character. Use P to put it before the
current character.
xp
This combination of x and p is a useful idiom. This swaps the character at the
cursor position with the one on its right.
Searching text
You can search for text in your file using regular expressions:
/
Use / followed by a regular expression to search forward in your file.
?
Use ? followed by a regular expression to search backward in your file.
n
Use n to repeat the last search in either direction.
You may precede any of the above search commands with a number indicating a
repetition count. So 3/x will find the third occurrence of x from the current point, as
will /x followed by 2n. Similarly, 2/^e will find the second line from the current position
that starts with e.
Note that search will wrap around to the top once the bottom of file is reached.
Getting help
Another useful command in vi is the help command, which you invoke by typing
:help. Help will open inside vi; use the :q command to leave help and go back to
your work. If you want help on some particular topic, say wrapping of lines, try
adding a word after the :help command, for example: :help wrap.
Putting it together
We began by wanting to add a line to our count1.sh file. To keep the original and
save the modified version as count2.sh, we could use these vi commands once we
open the file with vi. Note that <Esc> means to press the Esc key.
Listing 3. Editor commands to add a line to count1.sh
1G
O
sleep 20<Esc>
:w! count2.sh
:q
These commands do the following:
1G
Move to the first line of the file
O
Open a new line above it and enter insert mode
sleep 20
The new text that you want to add
<Esc>
Press the Esc key to return to command mode
:w! count2.sh
Write the file to disk
:q
Close vi
Simple when you know how.
This is the last article for Exam 101 - Topic 103: GNU and UNIX commands. See our
series roadmap for a description of and link to other articles in this series.
from:
IBM Developer works
只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。 | ||
【推薦】100%開源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
![]() |
||
相關(guān)文章:
|
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
|
||
|
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
31 | 1 | 2 | 3 | 4 | 5 | 6 | |||
7 | 8 | 9 | 10 | 11 | 12 | 13 | |||
14 | 15 | 16 | 17 | 18 | 19 | 20 | |||
21 | 22 | 23 | 24 | 25 | 26 | 27 | |||
28 | 29 | 30 | 1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
常用鏈接
留言簿(10)
隨筆分類(307)
- Algorithm(22)
- apache(1)
- Assembly(1)
- browser(2)
- C++_BASIS(39)
- Compiling Theorem(1)
- CPU(1)
- cvs(3)
- Database(8)
- Designed Patterns(3)
- FileFormat(4)
- FileSystem(1)
- freebsd(1)
- Game(2)
- gdb(1)
- Gossips(12)
- GP_STL(3)
- interview(8)
- java
- life and living(1)
- linux kernel(12)
- Linux_Coding(43)
- Linux_Driver
- Linux_SysAdmin(26)
- makefile(3)
- misce(5)
- MultiCore(1)
- Network(14)
- OS(18)
- RegularExpression(1)
- schedule(1)
- SearchEngine(1)
- security(2)
- Shell(25)
- Socket(18)
- storage(2)
- Template(4)
- VC_MFC(4)
- vi(5)
- website(1)
- windows(7)
隨筆檔案(297)
- 2012年10月 (1)
- 2012年9月 (1)
- 2012年7月 (1)
- 2012年6月 (7)
- 2012年5月 (3)
- 2012年4月 (2)
- 2011年9月 (3)
- 2011年8月 (3)
- 2011年6月 (3)
- 2011年5月 (2)
- 2011年3月 (2)
- 2011年1月 (1)
- 2010年12月 (2)
- 2010年11月 (6)
- 2010年10月 (4)
- 2010年9月 (7)
- 2010年8月 (12)
- 2010年7月 (6)
- 2010年6月 (5)
- 2010年5月 (11)
- 2010年4月 (16)
- 2010年3月 (20)
- 2010年2月 (18)
- 2010年1月 (26)
- 2009年12月 (34)
- 2009年11月 (36)
- 2009年10月 (5)
- 2009年9月 (1)
- 2009年7月 (2)
- 2009年6月 (3)
- 2009年5月 (6)
- 2009年4月 (6)
- 2009年3月 (11)
- 2009年2月 (6)
- 2008年11月 (1)
- 2008年10月 (1)
- 2008年9月 (3)
- 2008年8月 (4)
- 2008年7月 (16)
algorithm
- andytan
- algorithm, linux, os, network,etc
- EXACT STRING MATCHING ALGORITHMS
- httperf -- a web perf test tool
- Java多線程
- 編程夜未眠
- 布薩空間
- 結(jié)構(gòu)之法
- 沈一峰 google技術(shù)博客
- 小兵的窩
Books_Free_Online
C++
- Bjarne Stroustrup's C++ Style and Technique FAQ
- boyplayee column
- C Plus Plus
- CPP Reference
- LearnC++Website
- Welcome to Bjarne Stroustrup's homepage!
database
Linux
Linux shell
linux socket
misce
- cloudward
- 感覺這個(gè)博客還是不錯(cuò),雖然做的東西和我不大相關(guān),覺得看看還是有好處的
network
OSS
- Google Android
- Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
- os161 file list
overall
搜索
最新評(píng)論

- 1.?re: memcached完全剖析系列教程《轉(zhuǎn)》
- mark
- --zgpxgame
- 2.?re: 用prctl給線程命名
- 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
- --none
- 3.?re: 用prctl給線程命名
- 請(qǐng)問大俠: 用top命令的時(shí)候可以顯示修改后的線程名么?如何做呢?
- --dhao123@sina.com
- 4.?re: 解決Linux pthread_create內(nèi)存泄漏問題
-
我試過,每一種方法有的時(shí)候不行。
第二種是可以的。
- --朱先生
- 5.?re: 著名程序庫的比較和學(xué)習(xí)經(jīng)驗(yàn)
- 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
- --buy dissertation
- 6.?re: linux的消息隊(duì)列與共享內(nèi)存編程
- 內(nèi)容選擇得很好,謝謝
- --朱志超
- 7.?re: 著名程序庫的比較和學(xué)習(xí)經(jīng)驗(yàn)
- 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
- --LillianHancock
- 8.?re: 解決Linux pthread_create內(nèi)存泄漏問題[未登錄]
- 不錯(cuò),支持一個(gè)。
- --jack
- 9.?re: 淺談?dòng)螒蚍?wù)器---功能模塊上來看[未登錄]
- 不錯(cuò) 好文!! 期待博主繼續(xù)
- --cppexplore
- 10.?re: 全面整理的C++面試題
- 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
- --chatler
- 11.?re: 微軟面試中簡(jiǎn)單的算法題目(轉(zhuǎn))
- 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
- --chatler
- 12.?re: Browsers, processes, cookies and session state
- 每個(gè)IE Instance該是不同的進(jìn)程吧,可以獲取進(jìn)程ID,在每個(gè)instance里建一個(gè)名稱包含進(jìn)程id的目錄名,就可以分目錄存儲(chǔ)了吧。
- --chatler
- 13.?re: Browsers, processes, cookies and session state
-
文章說的很清楚,多謝
我有一個(gè)問題:
如何為每個(gè)ie instance ie實(shí)例的 Persistent cookies cookie 指定不同的存儲(chǔ)目錄? - --domolo
- 14.?re: 從一道面試題看指針與數(shù)組的區(qū)別
- 一個(gè)字,強(qiáng)!
- --路過
- 15.?re: 一個(gè)關(guān)于單向鏈表的面試題
- 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
- --chatler
閱讀排行榜
- 1.?Windows Socket五種I/O模型(8343)
- 2.?最大公約數(shù)(Gcd)兩種算法(Euclid && Stein)<轉(zhuǎn)>(5500)
- 3.?用prctl給線程命名(5057)
- 4.?Linux core dump file詳解 <轉(zhuǎn)>(4497)
- 5.?算法面試題(3402)
- 6.?64位與32位編程的數(shù)據(jù)類型區(qū)別(3235)
- 7.?解決Linux pthread_create內(nèi)存泄漏問題(3129)
- 8.?NUMA與英特爾下一代Xeon處理器學(xué)習(xí)心得<轉(zhuǎn)>(2997)
- 9.?c語言抓取網(wǎng)頁數(shù)據(jù)(2834)
- 10.?CVSNT服務(wù)器配置——添加用戶、解決無法登陸(2738)
- 11.? pthread_join函數(shù)及l(fā)inux線程(2647)
- 12.?一個(gè)基于Event Poll(epoll)的TCP Server Framework,淺析epoll(2577)
-
13.?為 C/C++ 項(xiàng)目構(gòu)建您自己的內(nèi)存管理器
(2565) - 14.?memcached完全剖析系列教程《轉(zhuǎn)》(2511)
- 15.?G++編譯選項(xiàng)(2406)
- 16.?STL容器 erase的使用陷井<轉(zhuǎn)載>(2196)
- 17.?epoll使用例子(2119)
- 18.?linux的消息隊(duì)列與共享內(nèi)存編程(2072)
- 19.?gdb帶參數(shù)調(diào)試(2064)
- 20.?The Linux Kernel Module Programming Guide(2015)
- 21.?一個(gè)關(guān)于單向鏈表的面試題(1911)
- 22.?c中strncmp與memcmp的區(qū)別(1885)
- 23.?優(yōu)化Derby數(shù)據(jù)庫技巧(1834)
- 24.?一個(gè)基于完成端口的TCP Server Framework,淺析IOCP(1761)
- 25.?自己整理的指令(1753)
- 26.?autotools制作Makefile 和configure文件(1639)
- 27.?Google C++ Style Guide(1631)
- 28.?linux系統(tǒng)調(diào)用函數(shù)(1625)
- 29.?An In-Depth Look into the Win32 Portable Executable File Format(1610)
- 30.? vim大小寫轉(zhuǎn)換(1584)
- 31.?淺談?dòng)螒蚍?wù)器---功能模塊上來看(1555)
-
32.?MIPS architecture
(1505) - 33.?教你用c實(shí)現(xiàn)http協(xié)議(1504)
- 34.?Aix下查看占用端口的進(jìn)程(1484)
- 35.?史上最強(qiáng)bash函數(shù)庫(1409)
- 36.?linux trap詳解(1342)
- 37.?ms,google,vmware,nvidia美國(guó)總部面試題(1327)
- 38.?多CPU上的原子操作(1316)
- 39.?power函數(shù)寫法《轉(zhuǎn)》(1283)
-
40.?Critical Section
(1256)
評(píng)論排行榜
- 1.?著名程序庫的比較和學(xué)習(xí)經(jīng)驗(yàn)(3)
- 2.?解決Linux pthread_create內(nèi)存泄漏問題(2)
- 3.?用prctl給線程命名(2)
-
4.?Browsers, processes, cookies and session state
(2) - 5.?全面整理的C++面試題(1)
- 6.?linux的消息隊(duì)列與共享內(nèi)存編程(1)
- 7.?一個(gè)關(guān)于單向鏈表的面試題(1)
- 8.?從一道面試題看指針與數(shù)組的區(qū)別 <轉(zhuǎn)>(1)
- 9.?淺談?dòng)螒蚍?wù)器---功能模塊上來看(1)
- 10.?微軟面試中簡(jiǎn)單的算法題目(轉(zhuǎn))(1)
- 11.?memcached完全剖析系列教程《轉(zhuǎn)》(1)
- 12.?死鎖和活鎖 deadlock and livelock(0)
- 13.?IT公司筆試算法題(0)
- 14.?effective c++(0)
-
15.?為 C/C++ 項(xiàng)目構(gòu)建您自己的內(nèi)存管理器
(0) -
16.?Comparing Two High-Performance I/O Design Patterns
(0) - 17.?boost 庫 enable_shared_from_this 實(shí)現(xiàn)原理分析<轉(zhuǎn)>(0)
-
18.?Which is asymptotically larger: lg(lg* n) or lg*(lg n)$? <
>(0) - 19.?TCMalloc : Thread-Caching Malloc(0)
- 20.?有抗癌效果的神奇食物(0)
- 21.?ubuntu下編譯內(nèi)核(0)
- 22.?MySQL索引背后的數(shù)據(jù)結(jié)構(gòu)及算法原理(0)
- 23.?wget進(jìn)行整站下載<轉(zhuǎn)>(0)
- 24.?What are the difference between DDL, DML and DCL commands?<轉(zhuǎn)載>(0)
- 25.?通過證書方式實(shí)現(xiàn)ssh的無密碼登陸<轉(zhuǎn)>(0)
- 26.?50個(gè)有關(guān)編程的至理名言<轉(zhuǎn)>(0)
- 27.?How I explained Design Patterns to my wife《reprint》(0)
- 28.?How to explain OOD to my wife-code project《轉(zhuǎn)載》(0)
- 29.?ifconf.c《轉(zhuǎn)載》(0)
- 30.?vim configuration(0)
- 31.?<轉(zhuǎn)>how to start a kernel thread(0)
- 32.?Linux系統(tǒng)性能指標(biāo)介紹(0)
- 33.?Linux進(jìn)程的狀態(tài)和調(diào)度(0)
- 34.?關(guān)鍵字的作用 auto static register const volatile extern (0)
- 35.?epoll使用例子(0)
- 36.?Windows Socket五種I/O模型(0)
- 37.?TCP的流量控制 (0)
- 38.?Linux下各類TCP網(wǎng)絡(luò)服務(wù)器的實(shí)現(xiàn)源代碼《轉(zhuǎn)》(0)
- 39.?fopen 文本文件與二進(jìn)制文件區(qū)別(0)
- 40.?Linux目錄掃描程序(0)