vim 常用命令


1. vim 中 ctrl+c 作为一个退出文件的快捷键来使用。


在一些操作软件中,比如 有道, ctrl+c 被屏幕划词(取词)占用, 导致在vim 中,鼠标选中一行后, vim 就会断掉 。
最简单的解决方法: 使用vim 的时候, 把取词和划词功能关掉。

2:vim 中使用table 可以自动补全命令,比如

:vs + table   -- > vsplit
:e + tablle --> explore
:s + table --> sexplore 


3 :vim 编辑区的折行

点击v进入visual模式,移动光标选择一定区域,输入 zf 就可将相应段落折行显示,zr 可展开,恢复原状 

4 : 大小之间切换
在vistual mode 下, gu , 全部变为小写, gU  全部变为大写 ,只修改光标当前位置的大小写,用  shift+ (键盘左上角的1 左边的按键)

title:用Vi/Vim/gVim处理字符的大小写转换(暨命令gu gU的灵活
url: http://space.itpub.net/519536/viewspace-589227
note: 很好的页子

5 vim 中的自动提示

在 insert mode,from XX import yy, 输入 ctrl+p,可以在当前文件(以及一些相关文件)中自动匹配,做一些提示,在type 中还是很有用的。

6:使用快捷键进行页面翻动
上 j
下 k
左 h
右 l


ctrl + f  屏幕前翻一页 (常用) front
ctrl + b  屏幕后翻一页 (常用) back
ctrl + d  屏幕后翻半页down
ctrl + u  屏幕前翻半页up 
# 除了使用快捷键,键盘上的pageup, pagedown 也是可以的。但正像vim 最早的“将双手从鼠标或其它位置解放出来”,如果双手位置不动,只要停留在主键盘区就可以完成翻页的效果,何乐而不为?

7:针对一个屏幕的光标移动
   +    光标移动到非空格的下一列
   -    光标移动到非空格的上一列
   n<space>  按下数字后再按空格,光标向右移动这一行的n 个字符。eg: 20<space>  光标向右移动20个字符


    0  或者 <home>  数字0,移动到这一行的第一个字符 (常用)

    & 或者  <end>    移动到这一行的最后一个字符

    G (shift+g) 光标移动到文件末尾


8 : 针对一个屏幕的光标移动:
    H   光标移动到这个屏幕最上方的一行
    L   光标移动到这个屏幕最下方的一行
    M  光标移动到这个屏幕最中央的一行

9  针对一个文件中光标的移动:
     G  光标移动到这个屏幕最下方的一行  (相对于 gg , 移动到文件最开始的一行)
     :n  移动到第n行,比如  :20 移动到第20行。 可以结合  :set number  :set nu  :set nonum 一起使用
     还有一个功能和 :n 一样的命令是  nG , 个人感觉不如  :n 快捷, 不是吗?呵呵
    n<enter>  光标向下移动n 行 (真的非常有用,这也是我决心重新学习 viim commands 的最初动机)

10: 查找与替换:
    /word    在光标之后查找一个名为word 的字符串 (我个人使用的时候,一般是 先使用 gg 移到文件头,然后 再使用 /word 查找)
    ?word    在光标之前查找一个名为word 的字符串
    # 查找是一般是区分大小写的。如果想不区分大小写,可以使用进入order 模式 :set ingorecase , 或者直接在 .vimrc 中添加 set ignorecase
    
    *(#)   当光标停留在某个单词上时, 输入这条命令表示查找与该单词匹配的下(上)一个单词 同样, 再输入 n 查找下一个匹配处, 输入 N 反方向查找


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


     %    查找与光标所在处相匹配的反括号, 包括 () [] { }
     #如果括号嵌套较多的时候,还是很有用的 


      f(F)x   在光标所在行进行查找, 查找光标右(左)方第一个x字符。找到后: 输入 ; 表示继续往下找。输入 , 表示反方向查找

    :n1,n2s/word1/word2/g   在第n1行与n2行之间查找word1 这个字符串,并将该字符串替换为 word2 (常用)
    #note: 这里很像linxu 中的sed 命令, 比如 sed  [-i]  's/word1/word2'  xxx.py 

   

     :n1,n2s/word1/word2/gc 相比上一个命令增加了一个 c ,会在修改之前输入一个确认,  (y/n/a/q/l/^E/^Y) y 表示替换,自动移动到下一个字符,n 表示不修改,自动移动到下一个字符,a 表示全部替换, 

    :q 表示放弃修改,修改完这一个后退出,


11: 删除,复制,粘贴

x   向后删除一个字符

X  向前删除一个字符
nx  数字加x, 向后删除n个字符。 比如 3x , 向后删除3 个字符
nX 类nx, 改为向前


D  或者 dd  将光标所在行剪切至剪切板,以后 输入 p, 就可以将其黏贴至文件中

dd  or D 删除(剪切)光标所在的一整行
ndd  剪切光标所在列的向下n 列
d1G  删除(剪切)光标所在行到文件第一行的所有数据 (有用)
dG   删除光标所在行到文件最后一行的所有数据


yy   复制光标所在的行

nyy  数字加yy,  复制光标所在行的向下n 行。 比如 4yy, 复制光标向下的4 行

yw  将当前单词复制到缓存区



y1G  复制光标所在行到文件第一行的所有数据 (有用)
yG    复制光标所在行到文件最后一行的所有数据


p  将剪切的数据黏贴在光标的下一列(如果剪切板中是一行),下一个位置 (一个字符) 
P   将剪切的数据黏贴在光标的上一列

J   将光标所在的列与下一列的数据整合成一列

u  or U 恢复前一个动作 (我一直疑心u 和 U 表示的含义是一样的))
ctrl+r   重做

i   在当前光标所在列之前插入字符
I  在当前光标所在行首插入字符

a   在当前光标所在列之后插入字符
A   在当前光标所在行末插入字符

o  在光标所在列的下一列添加一行,并且进入可编辑模式
O  在光标所在列的上一列添加一行,并且进入可编辑模式

r  替换光标所知的那一个字符
R  #note 看不出 R r 什么区别

esc   退出当前模式,回到一般模式

命令行模式:
:w   将编辑的数据写入硬盘中 (常用)
:w!   若文件属性为只读,强制写入该文件

:q  退出vim, 快捷方式为  shift + zz  #note: 其实 :q 命令本身已经很快捷了,没有必要再去快了,再说也不安全, 不是吗?
:q!  若曾修改过文件,又不想保存,使用! 强制退出不保存文件,快捷方式 shift+zq , 建议如上

:wq! 强制保存后退出

:w filename  将当前文件保存为另外一个文件 (类似另存新文档)
:r  filename  在编辑的文件中,读入另一个文件中的内容,即将filename这个文件内容加到光标所在行的后面  #BIG NOTE 非常炫,非常有用
:n1,n2 w filename   将当前文件的n1 到 n2 内容保存为 filename  这个文件

:set nu  显示行号,在每一行的前面显示该行的行号 nu 的全称为number 
:set nonu  取消行号
:set  nohlsearch   取消高亮显示

12: 针对一行中选取
进入visual 模式进行光标移动的选取自然可以。如果需要从某一个位置一直选取到行首或行尾, 可以使用:
将光标移到起始位置, 点击v进入visual 模式,^, 就可以选取至行首; 同样, $ 就可选取至行尾。

13: screen 的锁定和解锁
ctrl + s:   vim 屏幕锁定
ctrl + q:     vim 屏幕解锁

14: vim 用spaces 替换table 的几种方法
method 1:
在VIM中如何使得源码中的TAB全部用相应的空格替换?比如四空格.
在.vimrc中设置自动语法对齐后能不能设置用空格来补充前面的对齐位? [/quote]

:set ts=4
:set expandtab
:%retab
tabstop, table 键的占位符, table 的宽度为 4, 其实这个也可以调整,知道达到你需要的缩进效果
expandtab 扩展 table 键盘的功能
如果打开一个已存在的文件,并不会将所有的tab 替换为空格。如果希望这样的替换的话,可以使用 :retab


method 2:

使用 sed:
sed -i 's/\t/ /g' test.py

method 3:
自己的,也是最好的方法:
在文件中,使用这种形式,(table 和 space 都可可以直接输入,vim 可以识别)
:s/jia/luo/gc (严格来说,应该是这样的东西::%s/jia/luo/gc)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值