Linux命令全解( 二 )

vim使用意区分 一般模式和编辑模式vim 无法修改只读文件,可以修改后 输入 :w !sudo tee % --强制保存然后按 Ctrl + z 退出即可进入一般模式后yy拷贝当前行p粘贴5yy拷贝当前行向下的5行dd删除当前行5dd删除当前行向下的五行在vim底端命令行输入/要查找的内容即可找到第一个输入n寻找下一个输入N寻找上一个命令行输入set nu--显示行号set nonu --不显示行号撤销之前的编辑命令--在一般模式下输入u光标定位--一般模式下 行号 shift+g注意这里是看不到输入的行号的功能:(1) 命令行模式下的文本编辑器 。(2) 根据文件扩展名自动判别编程语言 。支持代码缩进、代码高亮等功能 。(3) 使用方式:vim filename如果已有该文件,则打开它 。如果没有该文件,则打开个一个新的文件,并命名为filename模式:(1) 一般命令模式默认模式 。命令输入方式:类似于打游戏放技能 , 按不同字符,即可进行不同操作 。可以复制、粘贴、删除文本等 。(2) 编辑模式在一般命令模式里按下i,会进入编辑模式 。按下ESC会退出编辑模式,返回到一般命令模式 。(3) 命令行模式在一般命令模式里按下:/?三个字母中的任意一个 , 会进入命令行模式 。命令行在最下面 。可以查找、替换、保存、退出、配置编辑器等 。操作:(1) i:进入编辑模式(2) ESC:进入一般命令模式(3) h 或 左箭头键:光标向左移动一个字符(4) j 或 向下箭头:光标向下移动一个字符(5) k 或 向上箭头:光标向上移动一个字符(6) l 或 向右箭头:光标向右移动一个字符(7) n<Space>:n表示数字,按下数字后再按空格 , 光标会向右移动这一行的n个字符(8) 0 或 功能键[Home]:光标移动到本行开头(9) $ 或 功能键[End]:光标移动到本行末尾(10) G:光标移动到最后一行(11) :n 或 nG:n为数字,光标移动到第n行(12) gg:光标移动到第一行,相当于1G(13) n<Enter>:n为数字,光标向下移动n行(14) /word:向光标之下寻找第一个值为word的字符串 。(15) ?word:向光标之上寻找第一个值为word的字符串 。(16) n:重复前一个查找操作(17) N:反向重复前一个查找操作(18) :n1,n2s/word1/word2/g:n1与n2为数字 , 在第n1行与n2行之间寻找word1这个字符串,并将该字符串替换为word2(19) :1,$s/word1/word2/g:将全文的word1替换为word2(20) :1,$s/word1/word2/gc:将全文的word1替换为word2,且在替换前要求用户确认 。(21) v:选中文本(22) d:删除选中的文本(23) dd: 删除当前行(24) y:复制选中的文本(25) yy: 复制当前行(26) p: 将复制的数据在光标的下一行/下一个位置粘贴(27) u:撤销(28) Ctrl + r:取消撤销(29) 大于号 >:将选中的文本整体向右缩进一次(30) 小于号 <:将选中的文本整体向左缩进一次(31) :w 保存(32) :w! 强制保存(33) :q 退出(34) :q! 强制退出(35) :wq 保存并退出(36) :set paste 设置成粘贴模式,取消代码自动缩进(37) :set nopaste 取消粘贴模式,开启代码自动缩进(38) :set nu 显示行号(39) :set nonu 隐藏行号(40) gg=G:将全文代码格式化(41) :noh 关闭查找关键词高亮(42) Ctrl + q:当vim卡死时,可以取消当前正在执行的命令异常处理:每次用vim编辑文件时 , 会自动创建一个.filename.swp的临时文件 。如果打开某个文件时,该文件的swp文件已存在,则会报错 。此时解决办法有两种:(1) 找到正在打开该文件的程序 , 并退出(2) 直接删掉该swp文件即可 在打开文件保存后,:%!g++ main.c && ./a.out 直接编译执行 :!% + x,x可以为任意命令,!%可以对vim的整个buffer调用命令行,并替换当前的buffer(用grep 过滤) 编辑二进制只读文件a.out , vim a.out;然后修改指定位置字符后,:%!xxd 二进制格式打开,修改后 :%!xxd -r 退出二进制编辑 :w !sudo tee % 强制写入变量定义变量
定义变量 , 不需要加$符号,例如:
name1='yxc' # 单引号定义字符串name2="yxc" # 双引号定义字符串name3=yxc # 也可以不加引号 , 同样表示字符串使用变量
使用变量,需要加上$符号,或者${}符号 。花括号是可选的,主要为了帮助解释器识别变量边界 。
name=yxcecho $name # 输出yxcecho ${name} # 输出yxcecho ${name}acwing # 输出yxcacwing只读变量
使用readonly或者declare可以将变量变为只读 。
name=yxcreadonly namedeclare -r name # 两种写法均可name=abc # 会报错,因为此时name只读删除变量
unset可以删除变量 。
name=yxcunset nameecho $name # 输出空行变量类型
自定义变量(局部变量)子进程不能访问的变量环境变量(全局变量)子进程可以访问的变量

推荐阅读