Linux and Vim 基础知识
1 常用Linux命令
| 命令 | 作用 | 语法 |
|---|---|---|
| ls | list files,显示指定目录下所含文件及子目录 | ls [-alrtAFR] [name]-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出-h 配合-l人性化显示文件大小-r 将文件以相反次序显示(原定依英文字母次序)-t 将文件依建立时间之先后次序列出-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"-R 若目录下有文件,则以下之文件亦皆依序列出 |
| pwd | print work directory,显示目前所在的工作目录的绝对路径名称 | pwd |
| cd | change directory,用于切换当前工作目录 | cd [dirName],大小写敏感~ 表示为 home 目录 . 表示目前所在的目录 .. 目前目录位置的上一层目录- 在最近两次目录之间来回切换 |
| touch | 修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件 | |
| mkdir | make directory,创建目录 | mkdir [-p] dirName-p 连续创建多个目录 |
| rm | remove,删除一个文件或者目录 | rm [options] name-i 删除前逐一询问确认。-f 强制删除,即使原档案属性设为唯读,亦直接删除,若不存在文件也不提示。-r 将目录及以下目录都删除。 |
| clear | 清除屏幕 | |
| tree | 以树状图列出目录的内容。它会列出指定目录下的所有文件,包括子目录里的文件。 | tree [-aACdDfFgilnNpqstux]-d 显示目录名称而非文件名称 |
| cp | copy file,用于复制文件或目录 | cp [options] source dest/directory-i 在覆盖目标文件之前给出提示-r 若给出的源文件是一个目录,此时将复制该目录下所有的子目录和文件。 |
| mv | move file,用来为文件或目录改名、或将文件或目录移入其它位置。 | mv [options] source dest/directory-i 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。 |
| cat | 查看文件的内容 | cat [-AbeEnstTuv] [--help] [--version] fileName-n 或 --number:由 1 开始对所有输出的行数编号-b 或 --number-nonblank:和 -n 相似,不过对于空白行不编号 |
| more | 查看文件的内容 | |
| grep | grep,用于查找文件里符合条件的字符串。 | grep [-abcEFGhHilLnqrsvVwxy] 待查找的字符串 目标文件名-n 或 --line-number : 显示符合样式的行编号。-v 或 --invert-match : 显示不包含匹配文本的所有行-i 或 --ignore-case : 忽略字符大小写的差别^xx 模式查找,查找以xx开头的行xx$ 模式查找,查找以xx结尾的行 |
| echo | 结合重定向将内容输入到文件中 | > 输出内容,会覆盖原有内容>> 追加,将内容追加到原有内容末尾 |
| | | 管道,将左边命令的输出,作为右边命令的输入 | |
| shutdown | 关机/重启。使用权限:系统管理者。 | shutdown [-t seconds] [-rkhncfF] time [message]-t seconds : 设定在几秒钟之后进行关机程序。-k : 并不会真的关机,只是将警告讯息传送给所有使用者。-r : 关机后重新开机。-c : 取消关机。time : 设定关机的时间。message : 传送给所有使用者的警告讯息。 |
| ifconfig | 查看或设置网卡信息 | ifconfig | grep inet |
| ping IP | ping 127.0.0.1 | 检测主机的网络连接是否正常 |
| scp | 用于 Linux 之间复制文件和目录 | -r 若给出的源文件是一个目录,此时将复制该目录下所有的子目录和文件。 |
| chmod | change mode,设置用户对文件的权限 | chmod abc file |
| chown | change owner,设置文件所有者和文件关联组 | chown root:root file |
| wc | word count,在默认的情况下,wc将计算指定文件的行数、字数,以及字节数。 | wc [-clw] 文件...-c或--bytes或--chars 只显示Bytes数。-l或--lines 显示行数。-w或--words 只显示字数。 |
| 管道 | 只显示文件夹 | ls -l | grep ^d |
| 管道 | 查看文件夹个数 | ls -l | grep ^d | wc -l |
| 管道 | 只显示文件 | ls -l | grep ^- |
| 管道 | 查看文件个数 | ls -l | grep ^- | wc -l |
2 vim 编辑器命令

2.1 命令模式
编辑文件进入即是命令模式,其他模式按下ESC也会进入命令模式
| 命令 | 作用 | 语法 |
|---|---|---|
| vim 文件名 | 打开或新建文件 | vim filename |
| vim 文件名 +行数 | 打开文件并定位到某一行 | vim filename +n |
| vim 文件名 + | 打开文件并定位到最后一行 | vim filename + |
| 移动命令 | ||
| h j k l | 左 下 上 右 移动光标 | |
| w | word,光标向右一次移动一个单词 | |
| b | back,光标向左一次移动一个单词 | |
| 0 | 光标回到当前行首 | |
| ^ | 光标回到当前行首第一个字符处 | |
| $ | 光标移动到当前行末尾处 | |
| gg | 文档顶部 | |
| G | 文档底部 | |
| 数字gg | 光标移动到数字对应行 | 66gg |
| 数字G | 光标移动到数字对应行 | 88G |
| :数字 | 光标移动到数字对应行 | :6 |
| Ctrl+b | back,向上翻页 | |
| Ctrl+f | forward,向下翻页 | |
| H M L | H M L分别跳到当前屏幕的顶部Head,中间Middle,底部Low | |
{ | 段落移动,上一段程序。vim中使用空行来区分段落 | |
} | 段落移动,下一段程序。vim中使用空行来区分段落 | |
| % | 匹配括号并在成对括号间切换,在括号之间来回切换。[ ] { } ( ) | |
| mk标记,’k跳到标记 | 标记某行,m+1个字母。单引号+字母跳转到标记处 | ma,'a |
| 选择文本(可视模式,可以和移动命令联合使用) | ggvG选择所有 | |
| v | 正常选择光标经过的文本 | |
| V | 选择光标经过的所有行 | |
| Ctrl+v | 竖直方向选择文本 | |
| 文本操作 | ||
| u | undo,撤销命令,返回上一步 | |
| Ctrl+r | redo,恢复撤销命令,重做刚才撤销的步骤 | |
| x | cut,删除光标所在的字符或者选中的文本 | |
| d(移动命令) | delete,删除选中的文本 | |
| dd | delete,删除光标所在的行,ndd可以删除n行 | |
| D | delete,删除光标到行尾的文本 | |
| 删除命令+移动命令 | dw 删除光标到第一个单词末尾的文本d0 删除光标到该行行首的文本d} 删除光标到该段落末尾的文本ndd 删除光标后的n行d代码行G 删除光标到指定代码行的所有文本d'k 删除光标到标记处k的所有文本 | |
| y(移动命令) | copy,复制由移动命令选中的所有文本 | |
| yy | copy,复制光标所在的行,或者光标及其后面的n行 | nyy |
| p | paste,在光标处后一行粘贴剪切板的文本 | |
| r | replace,替换光标所在位置的当前字符,直接在命令模式下 | |
| R | replace,替换光标及其后面的多个字符,按R进入了替换模式,替换完成后要按ESC退出到命令模式 | |
| 缩进排版 | ||
>> | 把选中的文本统一向右缩进4个空格 | 增加缩进 |
<< | 把选中的文本统一向左缩进4个空格 | 减少缩进 |
在可视模式下(v V Ctrl+v),只需要一个>或< | ||
| . | 点 重复上次命令 | |
| 查找命令 | ||
| /str | 查找str字符串 | /Soloman |
| * | 向后匹配当前光标位置处的单词 | |
| # | 向前匹配当前光标位置处的单词 | |
| :%s/原/新/g | 【全局替换】查找替换命令,查找原文本,并将其替换为新文本 | :%s/hi/hello/g |
| :s/原/新/g | 【选定区域替换】,先选定区域文本,再输入命令查找替换 | :s/old/new/g |
| :%s/原/新/gc | 【确认替换】,c表示confirm,y-替换,n-不替换,a-全部替换,q-退出 | :%s/yes/no/gc |
2.2 编辑模式
命令模式下输入 i 进入编辑模式,ESC退出到命令模式。一共有6种方法从命令模式进入编辑模式
| 命令 | 作用 | 使用频率 |
|---|---|---|
| i | insert,在当前光标所在字符前面插入文本 | 常用 |
| I | Insert,在当前光标所在行首插入文本 | 较常用 |
| o | on,在当前光标所在行的后一行插入一个空行 | 常用 |
| O | On,在当前光标所在行的前一行插入一个空行 | 常用 |
| a | append,在当前光标所在字符后面插入文本 | 不常用 |
| A | Append,在当前光标所在行尾插入文本 | 较常用 |
2.3 底行模式
命令模式下输入 : 进入底行模式,ESC退出到命令模式
| 命令 | 功能 |
|---|---|
| :w | write,保存文件 |
| :q | quit,推出文档,未保存时不准退出 |
| :q! | quit,强行退出文档 |
| :wq | write and quit,保存并退出文档 |
| :x | 同 wq,write and quit,保存并退出文档 |
| :e | edit,在vim编辑环境下直接切换编辑文件,在切换之前修改过的文件必须已被保存 |
| :n 文件名 | new,在vim编辑环境下直接新建文件 |
| :w 文件名 | write,将当前文件另存为新文件。但编辑的仍然是当前文件,而不是另存为的新文件。在实际开发中,用作阶段性文件备份。 |
| :sp | split,横向分屏,上下分屏,同时打开多个文件,每个文件一个窗口 |
| :vsp | vertical split,竖直分屏,左右分屏,同时打开多个文件,每个文件一个窗口 |
| 切换分屏窗口,先按下Ctrl+W进入窗口命令中,再输入以下窗口命令进行操作 | |
| w | window,切换到下一个窗口 |
| r | reverse,互换窗口 |
| c | close,关闭当前窗口,但不能关闭最后一个窗口 |
| q | quit,退出当前窗口,如果是最后一个窗口,则退出vim |
| o | other,关闭其它窗口 |