博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Linux编程-vim末行模式

Posted on 2023-03-17 09:54  乔55  阅读(116)  评论(0编辑  收藏  举报

保存

  • q:退出
  • q!:强制退出,不保存修改内容
  • w:保存
  • wq:保存退出
  • x:保存退出
  • ZZ:快速保存退出

搜索替换

    :s/old/new/         # 光标所在行的第一个old替换成new
    :s/old/new/g        # 光标所在行的所有old替换成new
    :m,ns/old/new/      # 第m行至第n行中每行的第一个old替换成new
    :m,ns/old/new/g     # 第m行至第n行所有old替换成new
    :,$s/old/new/g      # 将当前行至末尾中所有的old替换成new
    :%s/old/new/g       # 所有行的所有old替换成new

    :%s/^x/y/g          # 将每行开头的x替换成y,其他地方的x保留不动
    :%s#.*#\/\/&#g      # 在每行行首添加//符号
    - 选用#号作分隔符
    - .*表示整行
    - &表示引用所查找的内容
    - \/\/用转义符将//输出
    - 意思是将.*代表的整行,全部替换成//&,而&又是所查找的整行

在当前文件中操作其他文件

    1. :./b.txt        // 将当前打开文件保存为b.txt
    2. :1,6 w ./b.txt  // 将当前打开文件的1至6行保存至b.txt
    3. :r ./b.txt      // 当b.txt文件读入当前打开文件中,默认添加在末尾
    4. :0 r ./b.txt    // 将b.txt读入到当前打开文件的首行,首行为第0行

文件分屏

    1. vim -O a.txt,b.txt     // 垂直屏方式打开文件2个文件,小写o是水平屏
    2. :split或vsplit         // 将同一个文件分屏
    3. 向右分屏,并且让光标在右边的分屏上(光标原本默认是在原始屏的)
      1. :set splitright
      2. :vsplit
    4. 向下分屏,并且让光标在下分屏上
      1. :set splitbelow
      2. :split
    5. 分屏快捷键设置
    map msl :set splitright<CR>:vsplit<CR>    // 向右分屏:msl
    map msh :set nosplitright<CR>:vsplit<CR>  // 向左分屏:msh
    map msk :set nosplitbelow<CR>:split<CR>   // 向上分屏:msk
    map msj :set splitbelow<CR>:split<CR>     // 向下分屏:msj
    6. 在各个分屏文件中切换:ctrl + w + h向左屏切换,可替换成l,j,k
    // 映射成快捷键
    let mapleader=" "      // 空格键
    map <LEADER>l <C-w>l   // 按下空格+l,就相当于ctrl+w+l
    map <LEADER>h <C-w>h   // 其他同理
    map <LEADER>k <C-w>k
    map <LEADER>j <C-w>j 
    7. 设置各个分屏大小
    map <up> :res +1<CR>
    map <down> :res -1<CR>
    map <left> :vertical resize-1<CR>
    map <right> :vertical resize+1<CR>

标签页

    1. :tabe a.txt      // 打开a.txt,若a.txt不存在,则创建该文件
    2. :tab split       // 用标签页打开当前编辑文件
    3. :tabc            // 关闭当前标签页
    4. :tabo            // 关闭所有标签页
    5. :tabf filename*  // 用标签页打开与通配符匹配的一个文件 
    5. :tabn            // 跳转至后一个标签页,全写为tabnext。或直接使用gt
    6. :tabp            // 跳转到前一个标签页,或直接使用gT
    7. :tabr            // 跳转到第一个标签页,全写为tabfirst
    8. :tabl            // 跳转到最后一个标签页,全写为tablast
    9. :tabm 0          // 将当前标签页移到第0个页面,
    10. :tabdo %s/x/y/g // 对多个标签执行同一个命令

    map mk :tabn<CR>
    map mj :tabp<CR>
    map ml :tablast<CR>
    map mh :tabfirst<CR>