打造属于自己的工具-gvim编辑器使用

    xiaoxiao2023-10-05  164

    gvim下载地址: 

    https://github.com/vim/vim-win32-installer/releases

    https://download.csdn.net/download/zwhfyy/11193500

    文本编辑工具对于一个程序员来说至关重要,那就是刺客身上的背包。请注意不是刀或者剑,IDE才是。但是这个背包至关重要。

    为啥用gvim呢?免费,开源,这都不是最重要的,关键是足够强大,背景足够深,这里是指咱们不可避免和linux打交道,在那里面也能用上;我最欣赏他的是可以轻松打开2G多的文本文件,这不是一般文本编辑工具,能做到的。额,说的有点多了,重点是我打算好好研究下这个背包,把吃的喝的,用的到的都放进去,下一步咱们先找找拉锁在哪里。

     

    第一个文件,打开UTF-8格式的日志文件,这大哥显示乱码。(一顿倒腾)

    打开gVim,并导航到菜单 “编辑”->“启动设定” 处

    添加一行代码 set fileencodings=utf-8,cp936 ,然后保存

    重新打开乱码没了,81难的第一难就算是过了。

     

    第二个问题,必须要使用鼠标右键点击使用gvim直接打开文件才够方便

    第一步: 删掉注册表中的HKEY_CLASSES_ROOT//shellex/ContextMenuHandlers/gvim* 第二步: 注册表下,HKEY_CLASSES_ROOT/*/shell下添加项,命名为"用vim编辑", 再对"用vim编辑"右键,新建项,命名为"command",在"command"的右边窗口第一个文件(也是唯一一个),将其数值数据设定为""D:\\gvim_8.1.1364_x64\\vim\\vim81\\gvim.exe" -p --remote-tab-silent "%1",其中数值数据包括双引号;上面的数值名称不用修改,点击确定可以退出。

     

    第三个问题,不支持Ctrl+C  Ctrl+V    Ctrl+A   Ctrl+Z ,没这几个快捷键的编辑器那就不叫编辑器,必须要支持

    用户home目录下的   _vimrc文件添加这一段 

    source $VIMRUNTIME/mswin.vim behave mswin

     

     

    Json对象格式化

     用户home目录下的   _vimrc文件添加这一段

    command! Json :execute '%!python -m json.tool' \ | :execute '%!python -c "import re,sys;chr=__builtins__.__dict__.get(\"unichr\", chr);sys.stdout.write(re.sub(r\"\\u[0-9a-f]{4}\", lambda x: chr(int(\"0x\" + x.group(0)[2:], 16)), sys.stdin.read()))"' \ | :%s/ \+$//ge \ | :set ft=javascript \ | :1

    下载 python-3.7.3-embed-amd64 到电脑上,并且把这个目录添加到path上,确保python命令可用

    Python下载地址:https://www.python.org/downloads/

     

    下面开始尝试把查找到的内容所在行都复制出来

    越来越有趣了:

    :let @a="" :g/totalCost/y A :put a 第一步声明个变量 第二步复制所有totalCost 所在行 第三部新建个文件把查找到的行都复制出来

    关于在vim中的查找和替换

    1,查找

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

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

    2,大小写敏感查找

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

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

    3,大小写敏感配置

    Vim 默认采用大小写敏感的查找,为了方便我们常常将其配置为大小写不敏感:

    " 设置默认进行大小写不敏感查找 set ignorecase " 如果有一个大写字母,则切换到大小写敏感查找 set smartcase  将上述设置粘贴到你的~/.vimrc,重新打开Vim即可生效

    4,查找当前单词

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

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

    5,查找与替换

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

    :{作用范围}s/{目标}/{替换}/{替换标志} 例如:%s/foo/bar/g会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g)

    6,作用范围

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

    当前行:

    :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 替换标志 上文中命令结尾的g即是替换标志之一,表示全局global替换(即替换目标的所有出现)。 还有很多其他有用的替换标志:

    空替换标志表示只替换从光标位置开始,目标的第一次出现:

    :%s/foo/bar i表示大小写不敏感查找,I表示大小写敏感:

    :%s/foo/bar/i # 等效于模式中的\c(不敏感)或\C(敏感) :%s/foo\c/bar c表示需要确认,例如全局查找"foo"替换为"bar"并且需要确认:

    :%s/foo/bar/gc 回车后Vim会将光标移动到每一次"foo"出现的位置,并提示

    replace with bar (y/n/a/q/l/^E/^Y)? 按下y表示替换,n表示不替换,a表示替换所有,q表示退出查找模式, l表示替换当前位置并退出。^E与^Y是光标移动快捷键,参考: Vim中如何快速进行光标移

     

    不换行命令   set nowrap

     

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

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

     

    _vmrc配置文件  关于主题,我喜欢亮色的,背景是白色的,所以我选择了 zellner

    set fileencodings=utf-8,cp936 command! Json :execute '%!python -m json.tool' \ | :execute '%!python -c "import re,sys;chr=__builtins__.__dict__.get(\"unichr\", chr);sys.stdout.write(re.sub(r\"\\u[0-9a-f]{4}\", lambda x: chr(int(\"0x\" + x.group(0)[2:], 16)), sys.stdin.read()))"' \ | :%s/ \+$//ge \ | :set ft=javascript \ | :1 " 设置默认进行大小写不敏感查找 set ignorecase " 如果有一个大写字母,则切换到大小写敏感查找 set smartcase "设置标签栏的显示,0永远不显示 1两个以上显示 2 永远显示 set showtabline=2 set number "语法高亮 syntax enable syntax on color zellner "实现Alt+数字 页签切换 :nn <M-1> 1gt :nn <M-2> 2gt :nn <M-3> 3gt :nn <M-4> 4gt :nn <M-5> 5gt :nn <M-6> 6gt :nn <M-7> 7gt :nn <M-8> 8gt :nn <M-9> 9gt :nn <M-0> :tablast<CR> "set go= set scrolloff=5 " 设定光标离窗口上下边界 5 行时窗口自动滚动 set ruler " 打开状态栏标尺 set nocompatible " 设定 gvim 运行在增强模式下 set incsearch " 输入搜索内容时就显示搜索结果 set mouse=a " 设定在任何模式下鼠标都可用 set backspace=indent,eol,start "启用backspace delete等 set shortmess=atI "其中 I 表示启动时不显示 intro message 就是乌干达那句话 source $VIMRUNTIME/mswin.vim behave mswin let g:winManagerWindowLayout='FileExplorer' nmap wm :WMToggle<cr> if has("win32") set guifont=Courier_New:h10:cANSI endif

    正则表达式

    :g/^\s*$/d 删除只有空白的行

    :%s/^M$//g 后,回车即会自动删除该文件中的所有 ^M 字符。

    ^M 注意要用 Ctrl + V Ctrl + M 来输入

     

    常用快捷键

    撤销:u

    恢复撤销:Ctrl + r

    撤销:命令模式  u       插入模式 ctrl + z

    保存退出:Ctrl+w+q     或者 ZZ

    A行尾编辑

    I行首编辑

    o 操作,将在光标所在行下面另起新行,并将光标移到新行处,处于编辑模式

    O 操作,将光标所在行上面另起新行,并将光标移到新行处,处于编辑模式

    i 操作,光标将跑到该字符前 insert

    a 操作,光标将跑到该字符后 append

    w 光标一次往后移动一个单词的位置,光标定位在单词首部,可以结合数字使用

    b 光标一次往前移动一个单词的位置,光标定位在单词首部,可以结合数字使用

    e 光标一次往后移动一个单词的位置,光标定位在单词尾部,可以结合数字使用

    G 移动光标到文件末尾,和数字结合使用,如33G,移动光标到第33行gg 移动光标到文件开头

    `` 移动光标到前一个位置

    H home,移动光标到文件开始位置

    M Middle 移动光标到文件中部

    L last 移动光标到文件末尾

    ctrl+G 文件底部会出现文件信息:文件位置,权限,行数,所占百分比

    zz 使当前行成为可视窗口中心

    zt 使当前行成为可视窗口顶部

    zb 使当前行成为可视窗口底部

     

     

    [[或者gg跳转行头

    ]]或者shift+g 跳转行尾

    v可视化模式,可以从当前行开始选择

    Ctrl+v 列选择模式

    全部选择

    gg 移动到第一行

    v 视图模式

    G 移动到最后一行

    o跳转到选择区的最前面或者最后面

    删除文件所有内容:

    gg

    dG

    格式化代码

    非编辑模式,自动对齐:(gg=G)

    1,gg 跳转到第一行 2,shift+v 转到可视模式 3,shift+g 全选 4,按下神奇的 = 你会惊奇的发现代码自动缩进了,也可能崩溃了。

     

     

     

     

     

     

     

    最新回复(0)