vim 命令复习

命令模式下的命令及快捷键

cs 复制代码
# dd删除光所在行的内容
# ndd从光标所在行开始向下删除n行
# yy复制光标所在行的内容
# nyy复制光标所在行向下n行的内容
# p将复制的内容粘贴到光标所在行以下(小写)
# P将复制的内容粘贴到光标所在行以上(大写)
# ^立即跳转到光标所在行的行首
# $立即跳转到光标所在行的行尾
# gg跳转到文档的第一行行首
# G跳转到文档的最后一行行首
# ngg/G 跳转到第n行
# u撤销上一次编辑
# n(↑/↓/←/→)向上/下/左/右移动n字符
# w:向右跳转,如果光在字母上则跳转到下一个符号上,如果光标在符号上则跳转到下一个字母上,如果是文档是文本则调准到下一个单词
# b:与w相反,它是往左跳

pP复制命令

cpp 复制代码
具体场景​​
​​1. 复制单行内容​​
​​复制整行​​(按 yy 或 Y 复制):
p → 粘贴到 ​​当前行下方​​(新行)
P → 粘贴到 ​​当前行上方​​(新行)
​​2. 复制多行内容​​
复制多行后(如 3yy 复制3行):
p → 粘贴到 ​​当前行下方​​(多行整体插入)
P → 粘贴到 ​​当前行上方​​(多行整体插入)
​​3. 复制单词或字符​​
复制单词(按 yw 或 yiw)或字符(按 y + 移动命令):
p → 粘贴到 ​​光标右侧​​(字符后)
P → 粘贴到 ​​光标左侧​​(字符前)

实用技巧​​
​​1. 快速调整代码块位置​​
复制一行(yy)→ 移动到目标行 → 按 p 或 P 快速上下移动代码
cs 复制代码
5yy p #复制光标所在行向下5行的内容并将复制的内容粘贴到光标所在行以下

命令模式→插入(编辑)模式

cs 复制代码
# s------------删除光标所在的字符 并进入编辑模式
# S------------删除光标所在行的内容 并进入编辑模式
# o------------向光标所在行下方插入新行 并进入编辑模式
# O------------向光标所在行上方插入新行 并进入编辑模式
# a------------在光标右侧移动一个字符,并进入编辑模式
# A------------光标移动到行尾,并进入插入模式
# i------------进入编辑模式,在光标所在位置进行编辑
# I------------回到光标所在行的行首 并进入编辑模式
# ESC 退出笔记模式回到 命令模式

末行模式

cs 复制代码
# :q------------未做修改的情况下可以直接退出
# :wq------------保存并退出
# :w------------保存
# :w /dir/file------------将文件另存到/dir/file中
# :q!------------放弃修改并退出
# :wq!------------强制保存并退出
# :set nu------------开启文档的行号(set number)
# :set nonu------------关闭文档的行号(set no number)

末行模式的搜索替换

cs 复制代码
# /搜索 /+要搜索的字符串
# :n1,n2 s/old/new/g
n1:起始行
n2:中止行
s:表示搜索
old:表示要搜索的目标字符串
new:要将new字符串替换掉old字符串
g:替换所有的old字符串
%:表示全文

#:r /dir/file------------在光标位置处写入指定的新文件
#:g/word/d------------在全局范围内删除指定的字符串
#:n1,n2 d------------删除n1到n2的行
#:n1,n2 copy n3---------------n1到n2为止内容复制到n3行

vim的配置文件

cpp 复制代码
# /etc/vimrc是全局配置文件,如果root用户修改了该文件,所有用户的vim都会受到影响。
# ~/.vimrc 这个用户个人的配置文件他的优先级高于全局的配置文件

# set number 会使vim默认开始行号
# set tabstop=1 他会修改vim的tab的显示效果。
# set softtabstop=4 他会修改tab键的点击效果,它的效果取决于tabstop的值。
# set shiftwidth=4 自动缩进的宽度
# set mouse=a 开启鼠标
# syntax on 开启语法检测功能

# set hlsearch            "高亮度反白
# set backspace=2     "开启删除键的功能
# set autoindent        "自动缩排

修改vim的配置文件

如要修改vim默认配置使开启行号,自动缩进,tab快捷键空4格

cpp 复制代码
[root@server ~]# vim ~/.vimrc
....
 1 set number                     #会使vim默认开始行号
  2 set autoindent                #"自动缩排"
  3 set smartindent               #开启智能缩进模式,​​基于代码逻辑自动调整缩进
  4 filetype plugin indent on     #filetype on​​​​功能​​:启用​​文件类型检测​​,
                                  # filetype plugin on​​功能​​:
                                  # 加载与文件类型相关的​​插件​​(位于 ~/.vim/ftplugin/),     
                                  #iletype indent on​​​功能​​:
                                  # 启用与文件类型相关的​​缩进规则​​(位于 ~/.vim/indent/),
  5 set tabstop=4                 #修改vim的tab的显示效果为空4格。
  6
....
"~/.vimrc" 6L, 83B           

// ~/.vimrc 这个用户个人的配置文件他的优先级高于全局的配置文件                  

vim的异常模拟

cpp 复制代码
# vim编辑xxx文件时,不是直接编辑xxx,而是复制一个副本名为.xxx.swp的文件,然后修编辑该文件。
# 当我们使用:wq保存时,会用.xxx.swp覆盖掉xxx文件,并且会删除.xxx.swp。
# 当我们使用:q!退出,会删除.xxx.swp。

# 当在使用vim的过程中没有是 wq q!等退出方式 .xxx.swap就不会删除
# 这就会导致下一次再编辑此文件,会出现如下场景:

E325: 注意
发现交换文件 ".passwd_copy.swp"
            所有者: root    日期: 日 10月 20 22:24:57 2024
            文件名: ~root/passwd_copy
            修改过: 是
            用户名: root      主机名: NLCSA2
           进程 ID: 8678 (STILL RUNNING)
正在打开文件 "passwd_copy"
              日期: 日 10月 20 22:20:15 2024

(1) Another program may be editing the same file.  If this is the case,
    be careful not to end up with two different instances of the same
    file when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.
    如果是这样,请用 ":recover" 或 "vim -r passwd_copy"
    恢复修改的内容 (请见 ":help recovery")。
    如果你已经进行了恢复,请删除交换文件 ".passwd_copy.swp"
    以避免再看到此消息。

交换文件 ".passwd_copy.swp" 已存在!
以只读方式打开([O]), 直接编辑((E)), 恢复((R)), 退出((Q)), 中止((A)):


# 此时输入E,忽略.xxx.swp中的修改重新编辑文件
# 此时输入R,会读取.xxx.swp中的修改,继续编辑。

# 如果想要取消当前这种异常状态,在编辑过文件后,删除.xxx.swp文件即可
相关推荐
浅时光_c5 小时前
3 shell脚本编程
linux·开发语言·bash
Lucis__6 小时前
一文读懂TCP通信机制:基于相关API构建可靠性连接
linux·网络·tcp/ip
_深海凉_6 小时前
LeetCode热题100-有效的括号
linux·算法·leetcode
零号全栈寒江独钓8 小时前
基于c/c++实现linux/windows跨平台获取ntp网络时间戳
linux·c语言·c++·windows
左手厨刀右手茼蒿8 小时前
Linux 内核中的进程管理:从创建到终止
linux·嵌入式·系统内核
geinvse_seg9 小时前
中小团队如何低成本搭建项目管理系统?基于 Ubuntu 的 Dootask 私有化部署实战
linux·运维·ubuntu
CSCN新手听安9 小时前
【linux】高级IO,以ET模式运行的epoll版本的TCP服务器实现reactor反应堆
linux·运维·服务器·c++·高级io·epoll·reactor反应堆
丶伯爵式9 小时前
Ubuntu 24.04 更换国内软件源指南 | 2026年3月26日
linux·运维·ubuntu·国内源·升级
左手厨刀右手茼蒿9 小时前
Linux 内核中的 DMA 管理:从缓冲区到传输
linux·嵌入式·系统内核
Java后端的Ai之路9 小时前
Linux端口进程查找与终止教程
linux·运维·服务器