vim全家桶

vim:

vim有3种模式:

命令模式:
字符串查找、移动光标、删除、复制、粘贴等

输入模式:
编辑内容。

末行模式:
设置vi的使用环境(显示行号等)、查找替换、保存、退出等。

=======================================================
命令模式:

移动光标:
方向移动:方向键(上下左右)
翻页移动:PgUp、PgDn
行内的跳转:
   行首:^或Home或零
   行尾:$或End
   下一行的行首:回车
   移动光标向下n行:n回车
文件的首行:gg
文件的尾行:G
移至屏幕上端:H
移至屏幕中端:M
移至屏幕下端:L
移至当前单词的最后一个字母:e
移至下个单词的第一个字母:w
移至上个单词的第一个字母:b
移至下个句子的第一个字母:)
移至该句子的第一个字母:(
移至该段落的最后一个字母:}
移至该段落的第一个字母:{

增加:
a:追加,在当前字符后追加,进入输入模式
i:插入,在当前字符前插入,进入输入模式
o:在当前行后面插入一空白行,并进入输入模式

删除:
x:删除光标所在字符    nx删除从当前字符开始的n个字符
dd:删除光标所在行     ndd删除从当前行开始的n行
dw:删除一个单词       ndw删除从当前单词开始的n个单词
db:删除光标所在位置前的一个单词     ndb
dG:删除光标所在位置到文件最后一行的内容
d$:删除光标所在位置到本行行尾的内容
d^:删除光标所在位置到本行行首的内容
s:删除光标所在字符,并进入输入模式
S:删除光标所在行,并进入输入模式

修改:
r:修改光标所在字符,r后是要修正的字符    nr
R:进入替换状态,输入的文本会覆盖原先的内容
cc:修改整行文字。先删除当前行,再进入输入模式。跟S效果一样。
shift+~:将当前字母改成小写或大写
ctrl+a:将阿拉伯数字递增
ctrl+x:将阿拉伯数字递减

撤销:
u:撤销最近一次的操作
ctrl+R:可以恢复使用u命令的操作

重复:
.:重复最近一次的操作

复制:
yy:(yank)复制当前整行    nyy复制n行
p:粘贴(put)
nyw:赋值n个单词
yG:从当前行复制到文件尾行。

使用可视模式进行复制粘贴:
  1 定位光标要复制的行
  2 键入v命令,进入可视模式,使用方向键选择要复制的内容,选中的会反色
  3 键入y命令,复制
  4 移动光标到要粘贴的位置,键入p命令,粘贴成功

=======================================================
末行模式:

查找;
:n                            把光标定位到文件的第n行
:/string                      把光标定位到string所在的行,从上往下查找
:?string                      把光标定位到string所在的行,从下往上查找
/string                       把光标定位到string所在的单词,从上往下查找
?string                       把光标定位到string所在的单词,从下往上查找
替换:
:%s/old/new/g                 全文将old替换成new
:s/old/new/                   用new替换所在行首次出现的old
:s/old/new/g                  用new替换所在行所有的old
:3,15 s/old/new/g             用new替换第3行到第15行中的所有old
:.,15 s/old/new/g             用new替换当前行到第15行之间的所有old
:3,$ s/old/new/g              用new替换第3行到文件结束中的所有old
:3,10 s/^/#/g                 注释掉第3行到第10行之间的所有行

保存与退出:
:q!                           不保存并强制退出
:wq                           保存并退出
:x                            保存并退出
:w                            保存
:w b.txt                      另存为b.txt

多窗口编辑:
:split                        水平分割窗口,打开同一份文件
:split b.txt                  水平分割窗口,打开新的文件
:vsplit                       垂直分割窗口,打开同一份文件
:vsplit b.txt                 垂直分割窗口,打开新的文件
ctrl+w+w                      多窗口时,跳转窗口

执行shell命令:
:!命令                        例如::!ls   则可以不退出vim执行ls命令
    
模式:这些都可以写在~/.vimrc文件中(若无此文件则手动创建),这样每次进入文件就不用手动设置了
:set encoding=utf-8           设置编码为utf8,文件里有中文就不会报错了。
:set nu                       显示行号,nonu则取消。
:set cindent                  C风格的缩进。nocindent则取消。
:set expandtab                tab缩进用空格来代替,noexpandtab则反之。
:set tabstop=4                表示一个tab显示出来是4个空格的长度,默认8。
:set softtabstop=4            表示在编辑模式的时候按退格键的时候退回缩进的长度,当使用expandtab时特别有用。
:set shiftwidth=4             表示每一级缩进的长度,一般设置成跟softtabstop一样。
:set autoindent               自动缩进,每行缩进与上一行相等。noautoindent则取消。
:set fileformat=unix          其他平台编写的文件拿到unix下运行可能出错,设置这个属性即可避免。
:set cursorline               高亮当前行
:syntax on                    语法高亮
:set foldmethod=indent        折叠代码
:set ignorecase               搜索忽略大小写
:set ambiwidth=double         特殊符号占两个字符,防止特殊字符乱码
:filetype plugin on 允许vim加载文件类型插件。当这个选项打开时,vim会根据检测到的文件类型,在runtimepath中搜索该类型的所有插件,并执行它们。
:set nocompatible             compatible为兼容vi,nocompatible为不完全兼容,如果设置为compatible,则tab将不会变成空格
:set ai                       ai让vi自动对齐,noai则取消。
:set hls                      搜索时高亮显示被找到的文本
:set fileencodings=utf-8,ucs-bom,cp936
:set nobomb / bomb
    bomb:
    被称作BOM(Byte Order Mark)的不可见字符,是Unicode用来标识内部编码的排列方式的,在UTF-16、UTF-32编码里它是必需的,而在UTF-8里是可选的。因此,才会出现有的编辑器在文件头部添加添加BOM、而有的语法解析器又不作处理的的混乱情况。所谓BOM,全称是Byte Order Mark,它是一个Unicode字符,通常出现在文本的开头,用来标识字节序 (Big/Little Endian),除此以外还可以标识编码(UTF-8/16/32),如果出现在文本中间,则解释为zero width no-break space。
    这个BOM可以在编辑文本时设置的,但是,只能在第一次编辑时才能设置它为bomb还是nobomb,编辑完并保存后就无法再更改编码格式了。有关bomb命令:
    #添加BOM
    :set bomb
    #删除BOM
    :set nobomb
    #查询BOM
    :set bomb?
    Notepad++能把编码更改为无BOM的UTF-8编码格式。
:set paste 当window系统复制的内容,粘贴到linux下的文件里,发生格式错乱,则设置成粘贴模式
:set nopaste 退出粘贴模式

=======================================================
对比两个文件的不同:
vim -d  filename1 filename2  

自动补全:
如果上文出现过某个单词,则按ctrl+n可以实现补全功能。

多行注释:
ctrl+v   进入视图模式,方向键上下移动,把要注释的行选上
shift+i  插入字符
shift+#  把#插入到要注释的行前面(在第一行有显示)
ESC      按至少2次esc,则会把所有选中的行都在其前面加#

多行缩进:
方法1:同多行注释的方法,在第三步的时候,按4个空格即可。
方法2:(最常用)
shift+v  进入视图模式,方向键上下移动,选中多行
shift+>  向右缩进
shift+<  向左缩进

=======================================================
如果想在vim中执行python脚本,在~/.vimrc中写入:
map <F5> :call RunPython()<CR>
func! RunPython()
    exec "W"
    if &filetype == 'python'
        exec "!time python2.7 %"
    endif
endfunc

=======================================================
如果想在创建脚本时,自动写入包含文件名、作者、邮箱、创建时间等信息的文件头。
则在~/.vimrc文件末尾写入:
autocmd BufNewFile *.py,*.sh, exec ":call SetTitle()"
let $author_name = "James"
let $author_email = "James@xxx.com"
 
func SetTitle()
if &filetype == 'sh'
call setline(1,"\###################################################################")
call append(line("."), "\# File Name: ".expand("%"))
call append(line(".")+1, "\# Author: ".$author_name)
call append(line(".")+2, "\# Mail: ".$author_email)
call append(line(".")+3, "\# Created Time: ".strftime("%Y年%m月%d日"))
call append(line(".")+4, "\###################################################################")
call append(line(".")+5, "\#!/bin/bash")
call append(line(".")+6, "")
else
call setline(1,"\###################################################################")
call append(line("."), "\# File Name: ".expand("%"))
call append(line(".")+1, "\# Author: ".$author_name)
call append(line(".")+2, "\# Mail: ".$author_email)
call append(line(".")+3, "\# Created Time: ".strftime("%Y年%m月%d日"))
call append(line(".")+4, "\###################################################################")
call append(line(".")+5, "\#!/usr/bin/env python")
call append(line(".")+6, "")
endif
endfunc

=======================================================

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值