VIM的高级使用

转载自  https://www.cnblogs.com/itech/archive/2012/02/22/2363111.html

1)一些常用的Vim配置,在~/.vimrc中

syntax on       支持语法高亮

set nu          显示行号
set nonu      不显示行号

set ai          设置自动缩进

set shiftwidth=4   设置自动缩进 4 个空格, 当然要设自动缩进先.

set sts=4          即设置 softtabstop 为 4. 输入 tab 后就跳了 4 格.

set tabstop=4      实际的 tab 即为 4 个空格, 而不是缺省的 8 个.

set expandtab      在输入 tab 后, vim 用恰当的空格来填充这个 tab.

:set hls 打开搜索高亮

:set nohls 取消搜索高亮 

:set list : 显示特殊字符

:set nolist 

2)多文件编辑

:e filename  vim将在原窗口中打开新的文件, 若旧文件编辑过, 会要求保存.

:sp filename vim将分割出一个横向窗口, 并在该窗口中打开新文件.

:vsp filename vim将在右边分割出一个窗口, 并在该窗口中打开新文件.

如果:sp 或 :vsp没有指定文件,则在新窗口中打开原文件。

ctrl+w w来在vim打开的多个窗口中切换.

ctrl+w q来关闭多个窗口中当前的窗口.

 打开的两个文件上下窗口分布 : vim -o file1 file2
 打开的两个文件左右窗口分布 : vim -O file1 file2     

 已经打开一个文件,右边开窗口重复打开此文件: vsp     

3) 查找

/xxx(?xxx) 表示在整篇文档中搜索匹配xxx的字符串, / 表示向下查找, ? 表示向上查找.查找到以后, 再输入 n 查找下一个匹配处, 输入 N 反方向查找.

*(#) 当光标停留在某个单词上时, 输入这条命令表示查找与该单词匹配的下(上)一个单词. 同样, 再输入 n 查找下一个匹配处, 输入 N 反方向查找. (可以使用shift+* 或 shift + #来查找当前光标所在单词)

g*(g#) 此命令与上条命令相似, 只不过它不完全匹配光标所在处的单词, 而是匹配包含该单词的所有字符串.

% 本命令查找与光标所在处相匹配的反括号, 包括 () [] { }.

在vim中一般查找 :/str,如果有空格则需要:/str str2/ 

4) 光标移动

w(e) 移动光标到下一个单词. b 移动光标到上一个单词.

0 移动光标到本行最开头. ^ 移动光标到本行最开头的字符处. $ 移动光标到本行结尾处.

向前向后翻页 ctrl+f 和 ctrl+b. 

% 跳转到相配对的括号. 

G(shift+g)   - go to the last line in the vim editor (文件的末尾) 

1G - goto line number 1(文件的开始)

20G - goto line number 20

5)拷贝, 删除与粘贴

x表示删除当前字符。 

在 vi 中 y 表示拷贝, d 表示删除, p 表示粘贴. 其中拷贝与删除是与光标移动命令结合的, 看几个例子就能够明白了.

复制多行   光标移到开始复制行比如第6行,y  621 G;  复制当前行到621行(包括)。

yw 表示拷贝从当前光标到光标所在单词结尾的内容. dw 表示删除从当前光标到光标所在单词结尾的内容. y0 表示拷贝从当前光标到光标所在行首的内容. d0 表示删除从当前光标到光标所在行首的内容. y$ 表示拷贝从当前光标到光标所在行尾的内容. d$ 表示删除从当前光标到光标所在行尾的内容. yfa 表示拷贝从当前光标到光标后面的第一个a字符之间的内容. dfa 表示删除从当前光标到光标后面的第一个a字符之间的内容.

特殊地: yy 表示拷贝光标所在行. dd 表示删除光标所在行. D 表示删除从当前光标到光标所在行尾的内容.

删除整个文档 :1,$d            多行删除 :1,10d

删除某行后面的换行符号:在命令状态下,在某一行上按"J"键将Join下一行,呵呵 

u 撤销上次的操作,ctrl+r恢复上次的撤销。 

删除所有空白行(^是行的开始,\s*是零个或者多个空白字符;$是行尾) :g/^\s*$/d

x            删除光标所在处字符
X            删除光标所在前字符
dw            删除到下一个单词开头
de            删除到本单词末尾
dE            删除到本单词末尾包括标点在内
db            删除到前一个单词
dB            删除到前一个单词包括标点在内

6)替换

单个字符替换用r,覆盖多个字符用R,用多个字符替换一个字符用s,整行替换用S.

:s/vivian/sky/ 替换当前行第一个 vivian 为 sky

:s/vivian/sky/g 替换当前行所有 vivian 为 sky

:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky

:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky

n 为数字,若 n 为 .,表示从当前行开始到最后一行

:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky

:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符

:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/

:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/

:2,50s/part1/part2      #用part2替换第2行到第50行中每行第1个part1

:2,50s/part1/part2/g    #用part2替换第2行到第50行中所有的part1

:.,+3s/part1/part2      #用part2替换当前行以及当前行后面的三行中每行第1个part1

:.,+3s/part1/part2/g    #用part2替换当前行以及当前行后面的三行中所有的part1 

例如将每行增加 xxx : :%s/\(.*\)/\1 xxx/g 

删除多余的空格

   %s/^  *//       删除行首一个或多个空格

   %s/  *$//       删除行尾一个或多个空格

7)visual block状态

ctrl+v进入,列块选择,例如4l选中光标接下来的4列,7j光标开始的7行,执行4l和7j后选中7行4列的块, 也可以在ctrl+v后使用hjkl来控制选择的行和列,可以使用y,d等进行拷贝删除操作。例如删除多行前面的空格。

(块编辑:编辑一行,效果被应用到所有选中的行)例如注释多行:ctrl+v选择块后,然后I进入编辑状态在第一行的开始输入#,然后两次esc退出后,刚才选中的所有行前面自动加#,从而达到注释所有行的目的。

shift+v可以用来选中多行,然后:s/aaa/bbb/g, 对选中的行中进行替换。

shift+v选中多行后,执行d直接删除选中的多行。


http://man.chinaunix.net/newsoft/vi/doc/visual.html 

多行注释: Ctrl+v, 选中第一列行数,大写I 插入,输入注释符号 #或者//, 然后连按两下Esc

删除多行注释:Ctrl+v, 选中第一列行数,d删除

或者   起始行号,结束行号s/^/注释符/g       起始行号,结束行号s/^注释符//g

8) 其他

查看当前vim打开的文件:vim下:f

vim中去除空行或行末的^M:dos2unix ufile

VIM中sort不能用:只能在terminal下执行sort -u file > file_new

vim中diff文件: 如果已经打开了一个文件,则 :vert diffsplit file2, 如果还没有打开文件,则直接执行vi -O test_vi.txt test_vi2.txt,此时两个文件左右排列,如果需要两个文件上下排列的话,执行vi -o test_vi.txt test_vi2.txt。 vimdiff最多可以同时比较4个文件。

不退出vim,直接执行命令,例如在perl文件中,直接执行不退出,:!perl % 。 如果前面已经执行过了,则重复前面的命令时,只需要:!!

9)插入

i,实现的是在光标之前的插入;
I,大写的i实现在光标所在行的最前面插入;
a, 实现在光标后插入(其实很多时候这个是我想要的功能,只是我一直使用i然后进行光标的移动);
A,实现在光标所在行的行尾插入(很多时候我也需要这个功能,但是通常都是按下i之后再借助于end键,说起来,A算是最方便直接的了。自从我掌握了这个命令,使用了几次之后感觉捡到了金子);
 

10) 撤销 恢复

撤销  u

恢复 Ctrl+r

个人添加:

复制粘贴删除行:shift +v ,后 y  复制, p 粘贴, d 删除;  上下左右选中一行或者多行; 

跨文件时 :vs 新开窗口,ctrl +ww 切换窗口 

 打开的两个文件上下窗口分布 : vim -o file1 file2
 打开的两个文件左右窗口分布 : vim -O file1 file2     

已经打开一个文件,右边开窗口重复打开此文件: vsp   ;然后 :vim ../driver/test.c  打开另一个文件(注意v 别自动大写了)

插入空行  o+Esc

复制替换单词:当前光标单词用 yaw ,剪切删除用 daw ; 替换当前光标单词viwp

复制粘帖 剪切板:粘帖,编辑模式shift+insert ; 复制, visual 选中,   "+y    ,即复制到剪切板了(需要vim支持clipboard)

shift * :循环查找下一个光标所在单词

:3,231>                  第3行到第231行缩进, 也可< 退缩

:!ls    vim下显示当前目录

==================================terminator终端分屏===============================================

转载  https://blog.csdn.net/ruglcc/article/details/7805212

Ctrl+Shift+O
Split terminals Horizontally.(上下开新窗口)

Ctrl+Shift+E
Split terminals Vertically.(垂直开新窗口)

Ctrl+Shift+Right
Move parent dragbar Right.(放大当前窗口 向右)

Ctrl+Shift+Left
Move parent dragbar Left.

Ctrl+Shift+Up
Move parent dragbar Up.

Ctrl+Shift+Down
Move parent dragbar Down.

Ctrl+Shift+S
Hide/Show Scrollbar.(隐藏滚动条)

Ctrl+Shift+F
Search within terminal scrollback

Ctrl+Shift+N or Ctrl+Tab
Move to next terminal within the same tab, use Ctrl+PageDown to move to the next tab. If cycle_term_tab is False, cycle within the same tab will be disabled

Ctrl+Shift+P or Ctrl+Shift+Tab
Move to previous terminal within the same tab, use Ctrl+PageUp to move to the previous tab. If cycle_term_tab is False, cycle within the same tab will be disabled

Alt+Up
Move to the terminal above the current one.(切换当前窗口)

Alt+Down
Move to the terminal below the current one.

Alt+Left
Move to the terminal left of the current one.

Alt+Right
Move to the terminal right of the current one.

Ctrl+Shift+C
Copy selected text to clipboard

Ctrl+Shift+V
Paste clipboard text

Ctrl+Shift+W
Close the current terminal.

Ctrl+Shift+Q
Quits Terminator

Ctrl+Shift+X (最大化当前窗口)
Toggle between showing all terminals and only showing the current one (maximise).

Ctrl+Shift+Z
Toggle between showing all terminals and only showing a scaled version of the current one (zoom).

Ctrl+Shift+T
Open new tab


Ctrl+Shift+Alt+T
Open new tab at root level, if using extreme_tabs.


Ctrl+PageDown
Move to next Tab


Ctrl+PageUp
Move to previous Tab


Ctrl+Shift+PageDown
Swap tab position with next Tab


Ctrl+Shift+PageUp
Swap tab position with previous Tab


Ctrl+Shift+F
Open buffer search bar to find substrings in the scrollback buffer. Hit Escape to cancel.


Ctrl+Plus (+)
Increase font size. Note: this may require you to press shift, depending on your keyboard


Ctrl+Minus (-)
Decrease font size. Note: this may require you to press shift, depending on your keyboard


Ctrl+Zero (0)
Restore font size to original setting.


F11
Toggle fullscreen(放大当前窗口)


Ctrl+Shift+R
Reset terminal state


Ctrl+Shift+G
Reset terminal state and clear windowUbuntu terminator 多窗口终端的快捷键

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值