不枉初心,砥砺前行

皮皮祥的博客

欢迎留言,评论

导航

VIM常用功能

目录

vim的查找功能

一,匹配:

二,正则表达式

三,快速查找

跳转移动

vim 文本行逆序化

vim跳转到指定行

vim删除

显示不可见字符

函数跳转(需要插件ctags)

移动

文档操作

翻页

复制 / 粘贴

查找 / 替换

排版

编辑多个文件

拆分成多窗口

切换窗口

快速编辑

查看文件编码

在线帮助

vim的查找功能

在vim下要查找字符串

一,匹配:

片段匹配

1,从上往下查找,比如“string” :   /string

2,从下往上查找,比如“string” : ?string 

精确匹配
如果你输入 "/the",你也可能找到 "there"。要找到以 "the" 结尾的单词,可以用:
/the\>    "\>" 是一个特殊的记号,表示只匹配单词末尾。类似地,"\<" 只匹配单词的开头。
这样,要匹配一个完整的单词 "the",只需:/\<the\>

二,正则表达式

1,. :通配1个字符 ,如 匹配 server, 可以用  /se...r

2,* :通配多个字符,如 匹配 privilege,可以用 p*ge

三,快速查找


1, Shift + * :让光标停留在想要查找的单词的任意一个字母上面, 然后输入 Shift + * ,即可快速选中该单词,并且通过 n  或  N 进行上一个或下一个的匹配。

2,yw :让光标停留在单词的第一个字母上, 然后输入yw拷贝该单词, 然后输入 / (Ctrl + R) 0 (即 /”0),回车, 就查找到了第一个匹配的单词, 并且通过 n  或  N 进行上一个或下一个的匹配。

3,匹配多个关键字

/关键字1\|关键字2\|关键字3...
即开头使用斜杠/表示后面是要匹配的内容,
如果想同时使用多个匹配则使用\|将多个关键字隔开

忽略大小写查找字符串

方法一:
查找时使用\c参数。进入底行模式,输入命令“/string\c ” 或 “/\cstring”,将会忽略大小写查找string字符串。
注意:\c与字符串之间不要有空格,因为该空格也会被认为是查询的字符串
方法二:
通过设置vim配置来忽略大小写查找。
set ignorecase 或 set ic 忽略大小写查找
set noignorecase 或set noic 严格大小写查找
临时的话,在底行模式,输入命令 set ignorecase 或 set ic,在没关闭该文件前提下,字符串的查找都将不区分大小写。



四、跳到下(上)一个搜索结果

搜索高亮后,

跳到下一个:小写n

上一个:大写N

跳转移动

gg:将光标移动到文档开头
G:将光标移动到文档末尾

1.跳转到文件头

输入冒号(:),打开命令输入框

输入命令1,是“一”的阿拉伯数字,不是小写的L

2.跳转到文件尾

输入冒号(:),打开命令输入框

输入命令:$

End键:将光标移动到开头

Home键:将光标移动到末尾

vim 文本行逆序化

要求

示例:将文本
1234
123
12
1
转换成
1
12
123
1234




命令

:g/.*/mo0
或者
:g/^/mo0

( 注意大文件会执行很长时间)

vim跳转到指定行

ngg/nG (跳转到文件第n行,无需回车)

:n (跳转到文件第n行,需要回车)

vim +n filename (在打开文件后,跳转到文件的第n行)

gg           : 跳转到文件头

Shift+g   : 跳转到文件末尾

行数+gg : 跳转到指定行,例跳转到123行:123gg

vim删除

  • vim 快速删除一个英文单词

ctrl-w删除最后一个单词,

ctrl-u删除你所在的整行.

vim 常用快捷键 - 简书

  1.  
    vim -r file: 恢复上次异常退出的文件;
  2.  
    vim +num file: 从第num行开始;

显示不可见字符

不可见特殊字符,例如\r显示为^M。通过:help digraph-table可看到所有Vim中可输入的特殊字符

显示当前文件的二进制编码可输入: %!xxd,该命令会替换文件内容!恢复:: %!xdd -r 。

Windows风格换行(\r\n)在Vim中会在每行结尾显示^M

将DOS风格换行(\r\n)的文件转为Unix风格换行(\n):

:set fileformat=unix
:w

” 显示隐藏字符
:set list
” 不显示隐藏字符
:set nolist

切换显示或隐藏不可见字符:

:set list!

:set invlist即可以将不可见的字符显示出来,例如,会以^I表示一个tab符,$表示一个回车符等。
 

cat -A file可以把文件中的所有可见的和不可见的字符都显示出来

Vim 将 tab 自动转换成空格

(摘自:Vim 将 tab 自动转换成空格https://blog.51cto.com/u_16013781/6159237

举例:将第一行到文件尾的 tab 转换成 space,每个 tab 用 4 个 space 替代。

:set expandtab
:%ret! 4


如果没有给定 4,则用当前的 tab 宽度设定替换为 space。

其它相关命令:

:set tabstop=4 设定tab宽度为4个字符
:set shiftwidth=4 设定自动缩进为4个字符
:set expandtab 用space替代tab的输入
:set noexpandtab 不用space替代tab的输入
这种设置只是针对当前的文件。如果想让设置对所有的文件都有效,可以修改 Vim 的配置文件 .vimrc ,将设置命令添加到文件中。
 

函数跳转(需要插件ctags

光标移到想要跳转的函数或变量上  : " CTRL + ] "

回到跳转之前的位置:“ CTRL + t ”

按了多少次“ CTRL + ] ”,就可以按多少次“ CTRL + T ”原路返回

[[  向前跳到上一个函数头
]] 向后跳到下一个函数头

tag+函数名 来跳转到对应的函数

:tag 函数名

安装ctags:

yum install ctags

sudo apt-get install exuberant-ctags

在源文件目录树执行如下命令:

ctags -R .

即可目录下生成一个tags文件, 这个文件就是所有函数和变量的索引列表

原文链接:https://blog.csdn.net/shenjin_s/article/details/81161372

光标移动 //vim9.0部分适用

  1. w: 前移一个单词,光标停在下一个单词开头;
  2. W: 移动下一个单词开头,但忽略一些标点;
  3. e: 前移一个单词,光标停在下一个单词末尾;
  4. E: 移动到下一个单词末尾,如果词尾有标点,则移动到标点;
  5. b: 后移一个单词,光标停在上一个单词开头;
  6. B: 移动到上一个单词开头,忽略一些标点;

文档操作

  1.  
    :e -- 重新加载当前文档。
  2.  
    :e! -- 重新加载当前文档,并丢弃已做的改动。
  3.  
    :w -- 保存修改。
  4.  
    :wq -- 保存并退出。

翻页

  1.  
    n%: 到文件n%的位置。
  2.  
    zz: 将当前行移动到屏幕中央。
  3.  
    zt: 将当前行移动到屏幕顶端。
  4.  
    zb: 将当前行移动到屏幕底端。

复制 / 粘贴

  1. p: 在光标之后粘贴。
  2. P: 在光标之前粘贴。
  3. d$ or D: 删除(剪切)当前位置到行尾的内容。
  4. d[n]w: 删除(剪切)1(n)个单词
  5. d0: 删除(剪切)当前位置到行首的内容
  6. [n] dd: 删除(剪切)1(n)行。

查找 / 替换

  1.  
    /something: 在后面的文本中查找something。
  2.  
    ?something: 在前面的文本中查找something。
  3.  
    /pattern/+number: 将光标停在包含pattern的行后面第number行上。
  4.  
    /pattern/-number: 将光标停在包含pattern的行前面第number行上。
  5.  
    n: 向后查找下一个。
  6.  
    N: 向前查找下一个。
  7.  
     
  8.  
    :s/old/new - 用new替换当前行第一个old。
  9.  
    :s/old/new/g - 用new替换当前行所有的old。
  10.  
     
  11.  
    \d: 表示十进制数(我猜的)
  12.  
    \s: 表示空格
  13.  
    \S: 非空字符
  14.  
    \a: 英文字母
  15.  
    \|: 表示 或
  16.  
    \.: 表示.
  17.  
    {m,n}: 表示m到n个字符。这要和 \s与\a等连用,如 \a\{m,n} 表示m 到n个英文字母。
  18.  
    {m,}: 表示m到无限多个字符。
  19.  
    **: 当前目录下的所有子目录。

排版

  1.  
    << 向左缩进一个shiftwidth
  2.  
    >> 向右缩进一个shiftwidth
  3.  
    :ce(nter) 本行文字居中
  4.  
    :le(ft) 本行文字靠左
  5.  
    :ri(ght) 本行文字靠右

编辑多个文件

  1.  
    使用:next(:n)编辑下一个文件。
  2.  
    使用:previous或:N编辑上一个文件。
  3.  
    使用:wnext,保存当前文件,并编辑下一个文件。
  4.  
    使用:wprevious,保存当前文件,并编辑上一个文件。
  5.  
    使用:args 显示文件列表。
  6.  
    vi -o filenames 在水平分割的多个窗口中编辑多个文件。
  7.  
    vi -O filenames 在垂直分割的多个窗口中编辑多个文件。

拆分成多窗口


:split 新建一个窗口,将当前窗口分割成两半,他们显示的是相同缓冲区的内容(同一个文件)。这样就可以在两个窗口中浏览相同的文件了。

:vsplit 创建全新的垂直分割的窗口,同样是显示和当前窗口同一个文件内容。效果如下:

关闭与离开窗口

有4种关闭窗口的方式,分别是:离开(quit)、关闭(close)、隐藏(hide)、关闭其他窗口

^代表Ctrl键
^Wq,离开当前窗口
^Wc,关闭当前的窗口
^Wo,关闭当前窗口以外的所有窗口


原文链接:https://blog.csdn.net/pc153262603/article/details/106356307

切换窗口

  1.  
    ctrl+w ctrl+w: 切换到下一个窗口。或者是ctrl+w w。
  2.  
    ctrl+w p: 切换到前一个窗口。

快速编辑

  1.  
    ~: 反转光标所在字符的大小写。
  2.  
    r: 替换光标处的字符,同样支持汉字。
  3.  
    R: 进入替换模式,按esc回到正常模式。
  4.  
     
  5.  
    [n] u: 取消一(n)个改动。
  6.  
    :undo 5 -- 撤销5个改变。
  7.  
    :undolist -- 你的撤销历史。
  8.  
    ctrl + r: 重做最后的改动。
  9.  
    U: 取消当前行中所有的改动。
  10.  
    :earlier 4m -- 回到4分钟前
  11.  
    :later 55s -- 前进55秒

查看文件编码

  1.  
    :set fenc或:set fileencoding,查看当前文件的编码。
  2.  
    :set ff,显示当前文件的格式。
  3.  
    :pwd 显示vim的工作目录。
  4.  
    :ver 显示版本信息。

在线帮助

  1.  
    :h(elp)或F1 打开总的帮助。
  2.  
    :help user-manual 打开用户手册。命令帮助的格式为:第一行指明怎么使用那个命令; 然后是缩进的一段解释这个命令的作用,然后是进一步的信息。
  3.  
    :helptags somepath 为somepath中的文档生成索引。
  4.  
    :helpgrep 可以搜索整个帮助文档,匹配的列表显示在quickfix窗口中。
  5.  
    Ctrl+] 跳转到tag主题,
  6.  
    Ctrl+t
  1. 1.复制剪切粘贴撤销
  2.  复制:
  3.  复制一行则:yy
  4.  复制三行则:3yy,即从当前光标+下两行。
  5.  复制当前光标所在的位置到行尾:y$
  6.  复制当前光标所在的位置到行首:y^ 
  7.  剪切:
  8.  剪切一行:dd
  9.  前切三行:3dd,即从当前行+下两行被剪切了。
  10.  剪切当前行光标所在的位置到行尾:d$
  11.  剪切当前行光标所在的位置到行首:d^
  12.  粘贴:
  13.  用v选中文本之后可以按y进行复制,如果按d就表示剪切,之后按p进行粘贴。 
  14.  撤销与恢复:
  15.  'u' : 撤销上一个编辑操作
  16.  'ctrl + r' : 恢复,即回退前一个命令
  17.  'U' : 行撤销,撤销所有在前一个编辑行上的操作
  18.  2.屏幕翻页
  19.  Ctrl+u: 向上翻半屏
  20.  Ctrl+f: 向上翻一屏
  21.  Ctrl+d: 向下翻半屏
  22.  Ctrl+b: 向下翻一屏
  23.  3.移动光标指令 移动光标普遍使用的是方向键,考虑兼容问题,vi定义太多的方向指令,下面只是一小小部分(常用的几个): space: 光标右移一个字符 Backspace: 光标左移一个字符 Enter: 光标下移一行 nG: 光标移至第n行首 n+: 光标下移n行 n-: 光标上移n行 n:光标移至第n行尾0光标移至当前 行首
  24. : 光标移至当前行尾
  25. 4.插入删除指令
  26.  
    常用插入、删除指令如下:
  27.  
    i:在当前光标前插入,光标后文本向后移
  28.  
    a:从当前光标后插入,光标后文本后移
  29.  
    I:在光标所在行首插入(第一个非空白字符前)
  30.  
    A:从光标所在行末插入
  31.  
    o: 在光标所在行下面新增一行(并进入输入模式)
  32.  
    O: 在光标所在行上方新增一行(并进入输入模式)
  33.  
    x: 删除光标所在字符,等同于[Delete]功能键
  34.  
    X: 删除光标前字符,相当与[Backspace]
  35.  
    dd: 删除光标所在的行
  36.  
    r: 修改光标所在字符
  37.  
    R: 替换当前字符及其后的字符,直到按 [ESC]
  38.  
    s: 从当前光标位置处开始,以输入的文本替代指定数目的字符
  39.  
    S: 删除指定数目的行,并以所输入文本代替之
  40.  
    do: 删至行首
  41.  
    d$: 删至行尾
  42.  
     
  43.  
    5.退出
  44.  
    退出输入模式,先按一下[ESC]键(有时要多按两下),然后执行:
  45.  
    :w!
  46.  
    :w ——保存当前文件
  47.  
    :wq —— 存盘退出(与指令 :x 功能相同)
  48.  
    :q —— 直接退出,如已修改会提示是否保存
  49.  
    :q! ——不保存直接退出
 



posted on 2023-09-02 11:13  皮皮祥  阅读(548)  评论(1编辑  收藏  举报