
用vim写代码时,经常遇到这样的场景,复制多行,然后粘贴。
 可以这样做:
1. 将光标移动到要复制的文本开始的地方,按v进入可视模式。
2. 将光标移动到要复制的文本的结束的地方,按y复制。此时vim会自动将光标定位到选中文本的开始的地方,并退出可视模式。
3. 我移动光标到文本结束的地方,按p粘贴。
esc键通用,回到命令模式
使用技巧:
:set ic 忽略大小写
:w newfile 保存为一个新文件
:r file 在当前光标所在位置,将file文件内容插入到当前光标处
:!command 在vim中查看一个命令的执行结果,无需退出vim
:r !command 在当前光标所在处,将command执行的命令结果值插入到当前光标所在处
:x 保存并退出
:wq 保存并退出
:q! 不保存退出
gg 回到首行
G 跳到尾行
h 往左侧移动光标位置
j 往上侧移动光标位置
k 往下侧移动光标位置
l 往右侧移动光标位置
w 一次跳转一个单词、
a 在光标所在位置后插入
i 在光标所在位置前插入
o 在光标所在行后插入
x 删除光标所在位置处字符
r 替换当前光标所在处字符
d$ 删除光标所在处字符至行尾
d^ 删除光标所在处字符至行首
dd 删除当前光标所在的行
ndd 删除当前光标所在行及其后n行
J 删除当前行后的换行符
y 复制当前所选的字符
yy 复制当前所在的行
nyy 复制当前所在的行及其后n行
yG 复制当前所在的行至最后一行
ygg 复制当前光标所在位置至首行
p 粘贴
:%s/oldcontent/newcontent/g 替换旧的内容为新的内容,g代表全文替换,%代表全文搜索
:3,5s/oldcontent/newcontent/ 将3-5行的第一个查找的旧的内容替换为新的内容,仅替换第一个匹配的内容
另外,vim支持正则表达式
:nohigh 取消高亮显示
在linux中使用vi 打开文件时,能显示行号
最近使用Vim来粘贴外部文本内容,发现在Vim中粘贴shell代码后,缩进就全乱了。
仔细研究了以下,原来是自动缩进的缘故,取消了自动缩进和智能缩进,这样粘贴就不会错行了。但在有的vim中不行,还是排版错乱。
后来发现了更好用的设置::set paste进入paste模式以后,可以在插入模式下粘贴内容,不会有任何变形。这个真是非常好用
使用vi编辑~/.vimrc文件,在该文件中加入一行"set nu",添加内容不含引号, 命令如下:
vim ~/.vimrc
"===================
"适合自己用的vimrc配置文件
"===================
"设置编码
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
"自动保存
set autowrite
"=============新建.c,.h,.sh,.java文件,自动插入文件头
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" 
"定义函数SetTitle,自动插入文件头 
func SetTitle() 
    "如果文件类型为.sh文件 
    if &filetype == 'sh' 
        call setline(1,"\############################") 
        call append(line("."), "\# File Name: ".expand("%")) 
        call append(line(".")+1, "\# Author: Mr.Feng") 
        call append(line(".")+2, "\# mail: 1220033555@qq.com") 
        call append(line(".")+3, "\# Created Time: ".strftime("%c"))
        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: Mr.Feng") 
call append(line(".")+2, "    > Mail: 1220033555@qq.com ") 
        call append(line(".")+3, "    > Created Time: ".strftime("%c")) 
        call append(line(".")+4, " *****************************/") 
        call append(line(".")+5, "")
    endif
    "新建文件后,自动定位到文件末尾
    autocmd BufNewFile * normal G
endfunc 
 
                     
                    
                 
                    
                 
                
 
 
         
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号