Basic Vim Command

原创
2018/12/20 10:39
阅读数 132

What is vi?

UNIX系统下默认的编辑器

vi的操作模式

  1. Command mode 输入的字符都是命令(区分大小写),也可以进入Insert mode
  2. Insert mode 输入的字符来修改文件内容

进入vi

vi filename

退出vi

:x<Return>	quit vi, writing out modified file to file named in original invocation

:wq<Return>	quit vi, writing out modified file to file named in original invocation


:q<Return>	quit (or exit) vi

:q!<Return>	quit vi even though latest changes have not been saved for this vi cal
ZZ      Exit, saving changes

命令模式下移动光标位置

j or <Return> [or down-arrow]	  move cursor down one line
k [or up-arrow]	move cursor up one line
h or <Backspace> [or left-arrow]  move cursor left one character
l or <Space> [or right-arrow]	  move cursor right one character
0 (zero)	                  move cursor to start of current line (the one with the cursor)
$	                          move cursor to end of current line
w	                          move cursor to beginning of next word
b	                          move cursor back to beginning of preceding word
:0<Return> or 1G	          move cursor to first line in file
:n<Return> or nG	          move cursor to line n
:$<Return> or G	                  move cursor to last line in file
  ]]      Next section/function 
  [[      Previous section/function 

命令模式下屏幕操作

^f      move forward one screen
^b	move backward one screen
^d	move down (forward) one half screen
^u	move up (back) one half screen
^l	redraws the screen
^r	redraws the screen, removing deleted lines
 ^e      Scroll down one line 
 ^y      Scroll up one line  
   H       Home window line 
   L       Last window line 
   M       Middle window line
   +       Next line     

撤销操作

^u      UNDO WHATEVER YOU JUST DID; a simple toggle
 U      Undo all changes to line

插入内容

i	insert text before cursor, until <Esc> hit
I	insert text at beginning of current line, until <Esc> hit
a	append text after cursor, until <Esc> hit
A	append text to end of current line, until <Esc> hit
o	open and put text in a new line below current line, until <Esc> hit
O	open and put text in a new line above current line, until <Esc> hit

改变文本内容

r	replace single character under cursor (no <Esc> needed)
R	replace characters, starting with current cursor position, until <Esc> hit
~      Toggle character case

删除内容

x	delete single character under cursor
Nx	delete N characters, starting with character under cursor
dw	delete the single word beginning with character under cursor
dNw	delete N words beginning with character under cursor; e.g., d5w deletes 5 words
D	delete the remainder of the line, starting with current cursor position
dd	delete entire current line
Ndd or dNd	delete N lines, beginning with the current line; e.g., 5dd deletes 5 lines

复制粘贴

yy	copy (yank, cut) the current line into the buffer
Nyy or yNy	copy (yank, cut) the next N lines, including the current line, into the buffer
p	put (paste) the line(s) in the buffer into the text after the current line

搜索内容

/string	search forward for occurrence of string in text
?string	search backward for occurrence of string in text
n	move to next occurrence of search string
N	move to next occurrence of search string in opposite direction

显示行号

:.=	returns line number of current line at bottom of screen
:=	returns the total number of lines at bottom of screen
^g	provides the current line number, along with the total number of lines,in the file at the bottom of the screen

将当前文件内容拷贝到其他文件

:w newfile<Return>	write current contents to a new file named newfile
:12,35w smallfile<Return>	write the contents of the lines numbered 12 through 35 to a new file named smallfile
:w! prevfile<Return>	write current contents over a pre-existing file named prevfile

将其他文件内容拷贝到当前文件

:r filename<Return>	read file named filename and insert after current line (the line with cursor)
展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部