Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

配置

you should modify the vim configuration file. The file is called vimrc, and it is located under /etc/vim directory. We first make a copy of it to the home directory by cp command:

cp /etc/vim/vimrc ~/.vimrc

open .vimrc using vim:

vim ~/.vimrc

builtin help system

报错/etc/apt/sources.list” E212: Can’t open file for writing

Running :h E212 inside Vim

:h <

全选复制粘贴

缓冲区

Vim 中的复制、删除的内容默认都会被存放到默认(未命名)寄存器中,之后可以通过粘贴操作读取默认寄存器中的内容。寄存器是完成这一过程的中转站,Vim 支持的寄存器非常多,其中常用的有 a-zA-Z0-9+"

其中:
0-9:表示数字寄存器,是 Vim 用来保存最近复制、删除等操作的内容,其中 0 号寄存器保存的是最近一次的操作内容。
a-zA-Z:表示用户寄存器,Vim 不会读写这部分寄存器
"(单个双引号):未命名的寄存器,是 Vim 的默认寄存器,例如删除、复制等操作的内容都会被保存到这里。
+:剪切板寄存器,关联系统剪切板,保存在这个寄存器中的内容可以被系统其他程序访问,也可以通过这个寄存器访问其他程序保存到剪切板中的内容。

全选并复制到系统剪切板【好像没用?】
gg 到首行,然后 "+yG 把行首到行尾的内容复制到 + 寄存器。

"+yy  // 复制当前行到剪切板
"+p   // 将剪切板内容粘贴到光标后面
"ayy  // 复制当前行到寄存器 a
"ap   // 将寄存器 a 中的内容粘贴到光标后面

根据平台不同,要分两种情况。先用下面命令确定你属于哪一种,

vim --version | grep clipboard

不支持系统粘贴板

情况一,

如果结果里你找到加号开头的**+clipboard**, 恭喜你,你的vim没问题,是你姿势问题。

  • **"+y** 代替y将选中的内容复制到系统剪贴板,效果和ctrl-c一致。
  • 用**"+p**代替p将剪贴板内容复制到指定位置,也可以用ctrl-v

dxcs也一样,用之前前面加**"+**

如果想偷懒用y直接把内容复制到系统剪贴板,需要到vim配置文件.vimrc里加一行属性。用下面命令开始配置,

vim ~/.vimrc

然后,加入下面这行,

set clipboard=unnamed

现在你的ydxp已经能和 ctrl-cctrl-v 一个效果,并且能互相混用。

情况二,

如果找到的是负号开头的**-clipboard,**说明你的vim不支持系统剪切板,我的MacOS系统自带vim就不支持,所以跑来了。需要先重新安装vim,

Linux系统,

sudo apt install vim-gtk

MacOS,

brew install vim

安装好之后,重复情况一的操作即可。

命令

  1. 选定文本块。使用v进入可视模式,移动光标键选定内容。
  2. 复制的命令是y,即yank(提起) ,常用的命令如下:
    y 在使用v模式选定了某一块的时候,复制选定块到缓冲区用;
    yy 复制整行(nyy或者yny ,复制n行,n为数字);
    y^ 复制当前到行头的内容;
    y$ 复制当前到行尾的内容;
    yw 复制一个word (nyw或者ynw,复制n个word,n为数字);
    yG 复制至档尾(nyG或者ynG,复制到第n行,例如1yG或者y1G,复制到档尾)
  3. 剪切的命令是d,即delete,d与y命令基本类似,所以两个命令用法一样,包括含有数字的用法.
    d 剪切选定块到缓冲区;
    dd 剪切整行
    d^ 剪切至行首
    d$ 剪切至行尾
    dw 剪切一个word
    dG 剪切至档尾
  4. 粘贴的命令式p,即put(放下)
    p 小写p代表贴至游标后(下),因为游标是在具体字符的位置上,所以实际是在该字符的后面
    P 大写P代表贴至游标前(上)
    整行的复制粘贴在游标的上(下)一行,非整行的复制则是粘贴在游标的前(后)
  5. 全选:ggVG

注:
命令前面加数字表示重复的次数,加字母表示使用的缓冲区名称。使用英文句号”.”可以重复上一个命令。

非编辑(normal)模式下:

行间

shift+g 跳转到最后一行

gg 跳转到第一行

nG 移动光标到当前文件的第n行
:n 移动光标到当前文件的第n行 (同上)

行内

0 移动光标到当前行行首
$ 移动光标到当前行行尾
^ 移动光标到当前行的第一个非空字符

单词级

w 移动到下一单词的开头
b 移动到上一单词的开头
e 移动到光标所在单词的末尾

查找

1,查找

在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车。 Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。

Vim查找支持正则表达式,例如/vim$匹配行尾的"vim"。 需要查找特殊字符需要转义,例如/vim\$匹配"vim$"

2,大小写敏感查找

在查找模式中加入\c表示大小写不敏感查找,\C表示大小写敏感查找。例如:

/foo\c

将会查找所有的"foo","FOO","Foo"等字符串。

3,查找当前单词

在normal模式下按下*即可查找光标所在单词(word), 要求每次出现的前后为空白字符或标点符号。例如当前为foo, 可以匹配foo bar中的foo,但不可匹配foobar中的foo。 这在查找函数名、变量名时非常有用。

按下g*即可查找光标所在单词的字符序列,每次出现前后字符无要求。 即foo barfoobar中的foo均可被匹配到。

替换

:s(substitute)命令用来查找和替换字符串。语法如下:

:{作用范围}s/{目标}/{替换}/{替换标志}

例如:%s/foo/bar/g会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g)。

:%s/blog_os/yzq_os/g

作用范围

作用范围分为当前行、全文、选区等等。

当前行:

:s/foo/bar/g

全文:

:%s/foo/bar/g

选区,在Visual模式下选择区域后输入:,Vim即可自动补全为 :'<,'>

:'<,'>s/foo/bar/g

2-11行:

:5,12s/foo/bar/g

当前行.与接下来两行+2

:.,+2s/foo/bar/g

代码折叠

在可折叠处(大括号中间):
1 zc 折叠
2 zC 对所在范围内所有嵌套的折叠点进行折叠
3 zo 展开折叠
4 zO 对所在范围内所有嵌套的折叠点展开
5 [z 到当前打开的折叠的开始处。
6 ]z 到当前打开的折叠的末尾处。
7 zj 向下移动。到达下一个折叠的开始处。关闭的折叠也被计入。
8 zk 向上移动到前一折叠的结束处。关闭的折叠也被计入。

评论