linux-vim:vim的命令;~/.vimrc

未整理:http://blog.chinaunix.net/uid-10449864-id-2956813.html

http://coolshell.cn/articles/5426.html

http://www.cnblogs.com/amaoxiaozhu/archive/2012/03/23/2414007.html  这篇文章非常好

1 vim图例

1.1 vim三种模式


1.2 vim功能键


2 vim操作

2.1 vim打开文件

vi filename        #打开文件,并停留在上次编辑的位置
vi +n filename     #打开文件,并跳转到第n行
vi +/word filename #打开文件,跳转到含有内容word的行

2.2 vim的移动

h 或 向左箭头键(←)
 光标向左移动一个字符
j 或 向下箭头键(↓)
 光标向下移动一个字符
k 或 向上箭头键(↑)
 光标向上移动一个字符
l 或 向右箭头键(→)
 光标向右移动一个字符
向后移动30行          :30+↓或者30+j
向后移动30个字符距离  :30+<space>
向后移动30行          :30+<Enter>
向下移动一页           :<pagedown>
向上移动一页           :<pageup>
本行最前面             :<home>
本行最后面             :<end>

2.2 vim的插入

i当前光标前插入
a当前光标后插入
I行首插入
A行尾插入
o当前行后插新行
O当前行前插新行

2.3 vim的删除

cw替换单词
dd删除当前行
x删除当前光标字符【相当于delete】
X删除光标前一个字符【相当于backspace】

2.4 vim的跳转

gg回到文件首
ngg/n跳转到第n行
G回到文件尾

2.4 vim的复制和粘贴

yy复制当前行
pp 为将已复制的数据在光标下一行贴上
PP 则为贴在游标上一行

1,set paste/ set nopaste

2,设置.vimrc

2.5 vim的撤销和重做

u撤销上一步的操作
ctrl+r重做前一个命令

2.6 vim中的选中

按v或者V或者ctrl+v进入可视模式(三中按键功能不同,自己体验就明白了)

v选任意字段
V选任意行段
ctrl+v选任意长方形块

【ctrl+v】 + 【I(shift i)】+【Esc Esc】,可以以正方形方式增加内容。 

2.7 vim的取消高亮

在vim中用"/"查找后,如何把棕色高亮背景去掉?
比如我查找"printf",使用"/printf", 然后文件中的"printf"都以棕色背景高亮显示出来, 但下次打开该文件, 发现"printf"仍被高亮显示
:nohlsearch

2.8 vim中下一个单词,上一个单词

下一个单词 w

上一个单词 b

yw 直接复制一个单词

cw直接修改一个单词

vim中查找下一个 shift+*

vim中补全单词  ctrl+p

Ctrl+ n 中的n为next 中n;
Ctrl+p中的p为previous 中p。

2.9 vim字符串的查找

1. vim 中用 / 和 ? 来查找字符串,两者的区别是:
/string 会高亮显示光标后匹配的第一个字符串,回车后光标移到该字符串的第一个字母;

?string 会高亮显示光标前匹配的第一个字符串,回车后光标移到该字符串的第一个字母。

/\<word\> 查找单独一个单词


在回车之后,按n键同方向转到下一个匹配的字符串,按N键反方向转到上一个匹配的字符串。

2. 用命令 :set ic 和 :set noic 来分别设置查找时不区分和区分大小写。

:set ic(ignorecase 的缩写) 忽略大小写
:set noic(noignorecase 的缩写) 不忽略大小写 

或者直接查找单词时:/word\c  来忽略大小写  /word\C来区别大小写

如果查找特殊字符,如 ^、$、*、/ 和 .,需要在前面加 \ 来转义。

2.10 vim字符串的替换

1. vim 中可用 :s 命令来替换字符串,具体如下:

加g ,放在命令末尾,表示对搜索字符串的每次出现进行替换;

不加 g,表示只对搜索字符串的首次出现进行替换;

:s/str1/str2/ 替换当前行第一个 str1 为 str2

:s/str1/str2/g 替换当前行中所有 str1 为 str2

:m,ns/str1/str2/ 替换第 n 行开始到最后一行中每一行的第一个 str1 为 str2
:m,ns/str1/str2/g 替换第 n 行开始到最后一行中所有的 str1 为 str2

(注:m和n 为数字,若m为 .,表示为当前行开始;若n为$,则表示到最后一行结束)

2.使用’#‘或者’+‘来替换掉’/‘作为分隔符
如果使用 # 作为分隔符,则中间出现的 / 不会作为分隔符,比如:
:s#str1/#str2/# 替换当前行第一个 str1/ 为 str2/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/


3. 使用%表示替换每一行
:%s/str1/str2/ (等同于 :g/str1/s//str2/) 替换每一行的第一个 str1 为 str2
:%s/str1/str2/g (等同于 :g/str1/s//str2/g 和 :1,$ s/str1/str2/g ) 替换文中所有 str1 为 str2


2.11 vim多窗口

1,横向切割

:split filename

2,纵向切割

:vsplit filename
3,快捷键
先进入 vim filename1


先横向切割 ^w+s

再将第二个窗口(上面的)编辑其他文件  :e  filename2


再纵向切割 ^w+v

再将第三个窗口(左上角)编辑其他文件 :e  filename3

若要退出,则使用 :q或者:qa


3 vim高级操作

3.1 vim查找相同两行

先将内容排序,然后查找前一行等于后一行者

vim test.txt
:sort
:/^\(.\+\)$\n\1

3.2 vim删除重复行

先将内容排序,然后删除前一行等于后一行者

vim test.txt
:sort
:g/^\(.\+\)$\n\1/d

3.3 文件末尾有^M标记

文本内容:如下示:

4768589 442352^M
4768590 asd520520^M
4768591 1^M
4768592 7936369^M
4768593 HZhaMBdl^M
4768594 3461593520^M
4768595 1^M
4768596 111111^M
4768597 7936369^M
4768598 8914066^M
4768599 7936369^M
4768600 wangyut2^M
set list结果:如果set list来显示所有包括不可见字符时(用set nolist取消),结果是这样的:

4768589 442352^M$
4768590 asd520520^M$
4768591 1^M$
4768592 7936369^M$
4768593 HZhaMBdl^M$
4768594 3461593520^M$
4768595 1^M$
4768596 111111^M$
4768597 7936369^M$
4768598 8914066^M$
4768599 7936369^M$
4768600 wangyut2^M$
问题原因:windows创建的文件是 \n\r结束的, 而linux,mac这种unix类系统是\n结束的。所以unix的文本到windows会出现换行丢失(ultraedit这种软件可以正确识别); 而反过来就会出现^M的符号了 。
解决方案

在 Vim 的命令模式中输入 :%s/^M$//g 后,回车即会自动删除该文件中的所有 ^M 字符。
注意: ^M 要用 Ctrl+v, Ctrl+m 来输入, 用键盘直接敲^和M是不行的! 后面的 $ 代表匹配行尾的内容,最后的 g 则表示每行中匹配到的内容都要置换--全局替换,否则只替换每行中匹配到的第一个。
sed ‘s/^M//' file // 正确,但是 ^M = Ctrl+v, Ctrl+m

3.4 vim删除偶数行奇数行

删除奇数行偶数行,也可以用normal命令,分别为:

奇数行
:%norm jkdd
偶数行
:%norm jdd

4 ~/.vimrc的配置

另外,对于问题【vim中键粘贴---导致代码格式混乱 】
按照博主的经验,在/etc/vim中,修改vimrc,添加 set pastetoggle=<F9>
在黏贴代码之前,进入insert模式,按F9,就可以关闭自动缩进。
当需要自己手写代码的时候,进入insert模式,默认就是自动缩进了。
set nocompatible
syn on                    " 打开语法高亮
set guifont=Luxi\ Mono\ 9 " 设置字体,字体名称和字号
set tabstop=4             " 设置tab键的宽度
set expandtab
set shiftwidth=4          " 换行时行间交错使用4个空格
set autoindent
set cindent
filetype plugin indent on
autocmd FileType c,cpp set cinoptions=:0,g0
autocmd FileType java set sw=2
autocmd FileType java set ts=2
set backspace=2           " 设置退格键可用
if has("gui_running")
    color evening
else
    color default
endif
set incsearch              " 查询时非常方便,如要查找book单词,当输入到/b时,会自动找到
set hlsearch
set nonu                   " 显示行号
set showmatch              " 设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号
set cursorline
"set paste
set ruler                  " 在编辑过程中,在右下角显示光标位置的状态行
au BufNewFile,BufRead *.hive set filetype=sql
au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif " 下次进入保留在上次停留位置
cmap w!! %!sudo tee > /dev/null %


例如如果要设置显示行号

将set nonu注释掉:"set nonu

再增加一行为:        set number

显示所有(包括不可见)字符  set list


:n1,n2s/word1/word2/g  n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则:『:100,200s/vbird/VBIRD/g』。(常用)
:1,$s/word1/word2/gc  从第一行到最后一行寻找 word1 字符串,并将该字符串取代为word2 !且在取代前显提示字符给使用者确认 (conform) 是否需要取代!(常用)
:e! 将档案还原到最原始的状态!
ZZ  若档案没有更动,则不储存离开,若档案已经经过更动,则储存后离开!
:set nu  显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu  与 set nu 相反,为取消行号!

5,python插件

5.1,python.vim:这是python的语法高亮模块

copy python.vim to ~/.vim/afer/ftplugin

将文件中"    let python_highlight_all = 1前面的引号去掉,可支持内置函数,数字,空格,异常的语法高亮。

5.2,pydiction:这是python的tab键自动补全

a.python_pydiction.vim
将文件 python_pydiction.vim 放到 ~/.vim/after/ftplugin/ 路径下,如果这个路径不存在,你可以自己创建这个文件夹结构。(Windows下面的话放在目录类似的结构中)
b.complete-dict
将complete-dict文件放到你自己的某个路径下,后面的配置会用到这个文件,这个文件就是记录所有的python关键词。
我将这个文件放到 ~/.vim/tools/pydiction/complete-dict
c. 配置 .vimrc 文件
在 ~/.vimrc 文件中添加如下配置

"以下用来配置pydict.vim插件
set nobackup "取消备份即swp文件
set helplang=cn "设置中文帮助文档
set encoding=utf-8 "设置编码
syntax enable
syntax on "设置语法高亮
filetype plugin on
let g:pydiction_location = '~/.vim/tools/pydiction/complete-dict'
let g:pydiction_menu_height = 20

5.3,Matrix插件

matrix.vim

在 Vim 网站上下载文件 matrix.vim,存到 ~/.vim/plugin 目录中即可。
是的,说的就是电影 Matrix!Vim 的脚本并不是都干“正经事”的。想看一下电影里那些酷酷的字符在 Vim 的窗口里翻滚吗?发一个命令“:Matrix”即可(按任意键退出)。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值