vim 常用
来源:互联网 发布:性感淘宝买家秀的网店 编辑:程序博客网 时间:2024/04/29 11:58
一直用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
Cursor movement
- h - move left
- 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.
Insert Mode - Inserting/Appending text
- i - start insert mode at cursor
- 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
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 line
- 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
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
- vim 常用
- vim常用
- vim 常用
- VIM常用
- vim 常用设置
- vim常用操作入门
- vim 常用设置
- VIM常用用法进阶
- vim 常用设置
- vim常用插件
- vim的常用插件
- VIM 常用插件推荐
- VIM常用技巧
- vim的常用配置
- VIM常用操作
- vim常用插件介绍
- vim常用指令使用指南
- Vim的常用快捷键
- How main() is executed on Linux
- Linux下安装配置JDK6
- Linux下Mysql数据库的配置安装和简单使用
- 【GPU开发笔记】一:CUDA初探——环境配置
- 算法实质【Matrix67】
- vim 常用
- Linux系统OOM killer机制详解
- 那些VisualStudio隐藏的调试功能
- Java中父类强制转换成子类的原则
- 一位Acmer过来人的经验
- 《C++编程规范》读书笔记(中)
- 不使用字符串库函数实现字符串复制的几种方法
- C++虚函数问题
- Ural 1028. Stars