vi使用技巧——在VI中剪切或者拷贝任意文本区域
2011-03-19 10:54
423 查看
一直用dd, dw, d$, d0,却很少在VI中剪切或者拷贝任意区域,但是这个是很常见的需求,google并试验了一下,这里总结一下。
使用VI剪切或者拷贝某个区域,其实跟我们在GUI编辑器上的操作差不多的,不外乎是如下步骤:
mark the region you want to cut/copy
cut/copy it
move to where you want to paste
paste it
这几个步骤在VI中分别对应VI的几个命令。下面简单介绍步骤一。
1. mark the region you want to cut/copy
主要有两种方式
法一: 使用vi的“书签”命令:
During a vi session, you can mark your place in the file with an invisible “bookmark,” perform edits elsewhere, and then return to your marked place.
在命令模式下,在你想要标识的地方敲入命令mx,表示Marks the current position with x (x can be any letter). (The original vi allows only lowercase letters. Vim distinguishes between uppercase and lowercase letters.)。这样相当于在这个地方作了个书签(锚点),之后你就可以快速的跳回来了。
'x: (Apostrophe.) Moves the cursor to the first character of the line marked by x.
`x: (Backquote.) Moves the cursor to the character marked by x.
``: (Backquotes.) Returns to the exact position of the previous mark or context after a move.
'': (Apostrophes.) Returns to the beginning of the line of the previous mark or context.
这是书签的主要作用,但是可以利用他来标识一个区域作删除。
这是因为d/y命令(事实上是所有VI命令)的一个很明显的特征:action+position。
于是得到利用书签作cut/copy详细步骤:
Cut and Paste:
Place the cursor at the beginning of the block you want to CUT.
Mark it with md
Go to the end of the block.
Cut it with d'd
Go to the new location that you want to PASTE those text.
Press P.
Copy and Paste:
Place the cursor at the beginning of the block you want to COPY.
Mark it with my
Go to the end of the block.
Copy it with y'y
Go to the new location that you want to PASTE those text.
Press P.
The name of the mark used is related to the operation (d:delete or y:yank).
第二种表示文本区域的方式是使用VI的Visual Mode可视化选取,这个就非常像GUI了,只是是用键盘而不是鼠标来移动光标。
Cut and paste:
Position the cursor where you want to begin cutting.
Press v (or upper case V if you want to cut whole lines).
Move the cursor to the end of what you want to cut.
Press d.
Move to where you would like to paste.
Press p to paste after the cursor, or P to paste before.
Copy and paste can be performed with the same steps, only pressing y instead of d in step 4.
关于如何在VI中剪切或者拷贝任意文本区域就讨论完了。
参考文章: Copy, cut and paste
PS:VI其实并不难使用,只要记住几个常用的命令就可以非常高效的工作了——http://www.worldtimzone.com/res/vi.html
j - move down
k - move up
l - move right
w - jump by start of words (punctuation considered words)
W - jump by words (spaces separate words)
e - jump to end of words (punctuation considered words)
E - jump to end of words (no punctuation)
b - jump backward by words (punctuation considered words)
B - jump backward by words (no punctuation)
0 - (zero) start of line
^ - first non-blank character of line
$ - end of line
G - Go To command (prefix with number - 5G goes to line 5)
Note: Prefix a cursor movement command with a number to repeat it. For example, 4j moves down 4 lines.
I - insert at the beginning of the line
a - append after the cursor
A - append at the end of the line
o - open (append) blank line below current line (no need to press return)
O - open blank line above current line
ea - append at end of word
Esc - exit insert mode
J - join line below to the current one
cc - change (replace) an entire line
cw - change (replace) to the end of word
c$ - change (replace) to the end of line
s - delete character at cursor and subsitute text
S - delete line at cursor and substitute text (same as cc)
xp - transpose two letters (delete and paste, technically)
u - undo
. - repeat last command
V - start Linewise visual mode
o - move to other end of marked area
Ctrl+v - start visual block mode
O - move to Other corner of block
aw - mark a word
ab - a () block (with braces)
aB - a {} block (with brackets)
ib - inner () block
iB - inner {} block
Esc - exit visual mode
< - shift left
y - yank (copy) marked text
d - delete marked text
~ - switch case
2yy - yank 2 lines
yw - yank word
y$ - yank to end of line
p - put (paste) the clipboard after cursor
P - put (paste) before cursor
dd - delete (cut) a line
dw - delete (cut) the current word
x - delete (cut) current character
:wq - write (save) and quit
:q - quit (fails if anything has changed)
:q! - quit and throw away changes
?pattern - search backward for pattern
n - repeat search in same direction
N - repeat search in opposite direction
:%s/old/new/g - replace all old with new throughout file
:%s/old/new/gc - replace all old with new throughout file with confirmations
:bnext (or :bn) - go to next buffer
:bprev (of :bp) - go to previous buffer
:bd - delete a buffer (close a file)
:sp filename - Open a file in a new buffer and split window
ctrl+ws - Split windows
ctrl+ww - switch between windows
ctrl+wq - Quit a window
ctrl+wv - Split windows vertically
Another good vim commands cheatsheet and a vi introduction using the "cheat sheet" method
使用VI剪切或者拷贝某个区域,其实跟我们在GUI编辑器上的操作差不多的,不外乎是如下步骤:
mark the region you want to cut/copy
cut/copy it
move to where you want to paste
paste it
这几个步骤在VI中分别对应VI的几个命令。下面简单介绍步骤一。
1. mark the region you want to cut/copy
主要有两种方式
法一: 使用vi的“书签”命令:
During a vi session, you can mark your place in the file with an invisible “bookmark,” perform edits elsewhere, and then return to your marked place.
在命令模式下,在你想要标识的地方敲入命令mx,表示Marks the current position with x (x can be any letter). (The original vi allows only lowercase letters. Vim distinguishes between uppercase and lowercase letters.)。这样相当于在这个地方作了个书签(锚点),之后你就可以快速的跳回来了。
'x: (Apostrophe.) Moves the cursor to the first character of the line marked by x.
`x: (Backquote.) Moves the cursor to the character marked by x.
``: (Backquotes.) Returns to the exact position of the previous mark or context after a move.
'': (Apostrophes.) Returns to the beginning of the line of the previous mark or context.
这是书签的主要作用,但是可以利用他来标识一个区域作删除。
这是因为d/y命令(事实上是所有VI命令)的一个很明显的特征:action+position。
于是得到利用书签作cut/copy详细步骤:
Cut and Paste:
Place the cursor at the beginning of the block you want to CUT.
Mark it with md
Go to the end of the block.
Cut it with d'd
Go to the new location that you want to PASTE those text.
Press P.
Copy and Paste:
Place the cursor at the beginning of the block you want to COPY.
Mark it with my
Go to the end of the block.
Copy it with y'y
Go to the new location that you want to PASTE those text.
Press P.
The name of the mark used is related to the operation (d:delete or y:yank).
第二种表示文本区域的方式是使用VI的Visual Mode可视化选取,这个就非常像GUI了,只是是用键盘而不是鼠标来移动光标。
Cut and paste:
Position the cursor where you want to begin cutting.
Press v (or upper case V if you want to cut whole lines).
Move the cursor to the end of what you want to cut.
Press d.
Move to where you would like to paste.
Press p to paste after the cursor, or P to paste before.
Copy and paste can be performed with the same steps, only pressing y instead of d in step 4.
关于如何在VI中剪切或者拷贝任意文本区域就讨论完了。
参考文章: Copy, cut and paste
PS:VI其实并不难使用,只要记住几个常用的命令就可以非常高效的工作了——http://www.worldtimzone.com/res/vi.html
Cursor movement
h - move leftj - move down
k - move up
l - move right
w - jump by start of words (punctuation considered words)
W - jump by words (spaces separate words)
e - jump to end of words (punctuation considered words)
E - jump to end of words (no punctuation)
b - jump backward by words (punctuation considered words)
B - jump backward by words (no punctuation)
0 - (zero) start of line
^ - first non-blank character of line
$ - end of line
G - Go To command (prefix with number - 5G goes to line 5)
Note: Prefix a cursor movement command with a number to repeat it. For example, 4j moves down 4 lines.
Insert Mode - Inserting/Appending text
i - start insert mode at cursorI - insert at the beginning of the line
a - append after the cursor
A - append at the end of the line
o - open (append) blank line below current line (no need to press return)
O - open blank line above current line
ea - append at end of word
Esc - exit insert mode
Editing
r - replace a single character (does not use insert mode)J - join line below to the current one
cc - change (replace) an entire line
cw - change (replace) to the end of word
c$ - change (replace) to the end of line
s - delete character at cursor and subsitute text
S - delete line at cursor and substitute text (same as cc)
xp - transpose two letters (delete and paste, technically)
u - undo
. - repeat last command
Marking text (visual mode)
v - start visual mode, mark lines, then do command (such as y-yank)V - start Linewise visual mode
o - move to other end of marked area
Ctrl+v - start visual block mode
O - move to Other corner of block
aw - mark a word
ab - a () block (with braces)
aB - a {} block (with brackets)
ib - inner () block
iB - inner {} block
Esc - exit visual mode
Visual commands
> - shift right< - shift left
y - yank (copy) marked text
d - delete marked text
~ - switch case
Cut and Paste
yy - yank (copy) a line2yy - yank 2 lines
yw - yank word
y$ - yank to end of line
p - put (paste) the clipboard after cursor
P - put (paste) before cursor
dd - delete (cut) a line
dw - delete (cut) the current word
x - delete (cut) current character
Exiting
:w - write (save) the file, but don't exit:wq - write (save) and quit
:q - quit (fails if anything has changed)
:q! - quit and throw away changes
Search/Replace
/pattern - search for pattern?pattern - search backward for pattern
n - repeat search in same direction
N - repeat search in opposite direction
:%s/old/new/g - replace all old with new throughout file
:%s/old/new/gc - replace all old with new throughout file with confirmations
Working with multiple files
:e filename - Edit a file in a new buffer:bnext (or :bn) - go to next buffer
:bprev (of :bp) - go to previous buffer
:bd - delete a buffer (close a file)
:sp filename - Open a file in a new buffer and split window
ctrl+ws - Split windows
ctrl+ww - switch between windows
ctrl+wq - Quit a window
ctrl+wv - Split windows vertically
Another good vim commands cheatsheet and a vi introduction using the "cheat sheet" method
相关文章推荐
- vim的自动排版,剪切与拷贝任意区域方法
- DataGridView使用技巧—获取任意行或列的单元格文本
- vi使用技巧--批量加注释任意符号
- 一些使用vi的特殊技巧
- python高效编程技巧7(pickle的使用:可以将一个对象存储在一个文件中,或者load进来)
- Linux VI命令使用技巧
- ios使用UIWebView加载使用说明或者协议等文本方法
- VI的常见使用技巧
- vi使用的一些技巧
- Elicpse使用技巧-打开选中文件文件夹或者包的当前目录
- Elicpse使用技巧-打开选中文件文件夹或者包的当前目录
- UE(ultraedit)技巧【很多数据时设置换行】【列模式的使用】【选出具有特定内容的行】【复制bin文件视图】【bin文件添加或者删除字节】
- vi & vim复制,粘贴,剪切文本
- VI使用技巧
- VI使用技巧
- Android使用自带的程序打开图片或者文本
- 技巧:快速提高 Vi/Vim 使用效率的原则与途径
- VI的常见使用技巧
- firefox使用深色GTK主题时文本区域故障(vertex主题输入框字体为白色,看不清)
- 安卓开发中,在低版本SDK使用高版本的API会报错。一般处理方法是换一种实现方法,或者在高版本SDK中使用高版本API,低版本SDK中使用效果可能会差点的折衷方案;后者可以用如下技巧来实现。