Back to Blogs
linux
vim

Linux and Vim

Soloman
2019-09-02

Linux and Vim 基础知识

1 常用Linux命令

命令作用语法
lslist files,显示指定目录下所含文件及子目录ls [-alrtAFR] [name]-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出-h 配合-l人性化显示文件大小-r 将文件以相反次序显示(原定依英文字母次序)-t 将文件依建立时间之先后次序列出-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"-R 若目录下有文件,则以下之文件亦皆依序列出
pwdprint work directory,显示目前所在的工作目录的绝对路径名称pwd
cdchange directory,用于切换当前工作目录cd [dirName],大小写敏感~ 表示为 home 目录 . 表示目前所在的目录 .. 目前目录位置的上一层目录- 在最近两次目录之间来回切换
touch修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件
mkdirmake directory,创建目录mkdir [-p] dirName-p 连续创建多个目录
rmremove,删除一个文件或者目录rm [options] name-i 删除前逐一询问确认。-f 强制删除,即使原档案属性设为唯读,亦直接删除,若不存在文件也不提示。-r 将目录及以下目录都删除。
clear清除屏幕
tree以树状图列出目录的内容。它会列出指定目录下的所有文件,包括子目录里的文件。tree [-aACdDfFgilnNpqstux]-d 显示目录名称而非文件名称
cpcopy file,用于复制文件或目录cp [options] source dest/directory-i 在覆盖目标文件之前给出提示-r 若给出的源文件是一个目录,此时将复制该目录下所有的子目录和文件。
mvmove file,用来为文件或目录改名、或将文件或目录移入其它位置。mv [options] source dest/directory-i 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
cat查看文件的内容cat [-AbeEnstTuv] [--help] [--version] fileName-n 或 --number:由 1 开始对所有输出的行数编号-b 或 --number-nonblank:和 -n 相似,不过对于空白行不编号
more查看文件的内容
grepgrep,用于查找文件里符合条件的字符串。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 IPping 127.0.0.1检测主机的网络连接是否正常
scp用于 Linux 之间复制文件和目录-r 若给出的源文件是一个目录,此时将复制该目录下所有的子目录和文件。
chmodchange mode,设置用户对文件的权限chmod abc file
chownchange owner,设置文件所有者和文件关联组chown root:root file
wcword 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 编辑器命令

alt

2.1 命令模式

编辑文件进入即是命令模式,其他模式按下ESC也会进入命令模式

命令作用语法
vim 文件名打开或新建文件vim filename
vim 文件名 +行数打开文件并定位到某一行vim filename +n
vim 文件名 +打开文件并定位到最后一行vim filename +
移动命令
h j k l左 下 上 右 移动光标
wword,光标向右一次移动一个单词
bback,光标向左一次移动一个单词
0光标回到当前行首
^光标回到当前行首第一个字符处
$光标移动到当前行末尾处
gg文档顶部
G文档底部
数字gg光标移动到数字对应行66gg
数字G光标移动到数字对应行88G
:数字光标移动到数字对应行:6
Ctrl+bback,向上翻页
Ctrl+fforward,向下翻页
H M LH M L分别跳到当前屏幕的顶部Head,中间Middle,底部Low
{段落移动,上一段程序。vim中使用空行来区分段落
}段落移动,下一段程序。vim中使用空行来区分段落
%匹配括号并在成对括号间切换,在括号之间来回切换。[ ] { } ( )
mk标记,’k跳到标记标记某行,m+1个字母。单引号+字母跳转到标记处ma,'a
选择文本(可视模式,可以和移动命令联合使用)ggvG选择所有
v正常选择光标经过的文本
V选择光标经过的所有行
Ctrl+v竖直方向选择文本
文本操作
uundo,撤销命令,返回上一步
Ctrl+rredo,恢复撤销命令,重做刚才撤销的步骤
xcut,删除光标所在的字符或者选中的文本
d(移动命令)delete,删除选中的文本
dddelete,删除光标所在的行,ndd可以删除n行
Ddelete,删除光标到行尾的文本
删除命令+移动命令dw 删除光标到第一个单词末尾的文本d0 删除光标到该行行首的文本d} 删除光标到该段落末尾的文本ndd 删除光标后的n行d代码行G 删除光标到指定代码行的所有文本d'k 删除光标到标记处k的所有文本
y(移动命令)copy,复制由移动命令选中的所有文本
yycopy,复制光标所在的行,或者光标及其后面的n行nyy
ppaste,在光标处后一行粘贴剪切板的文本
rreplace,替换光标所在位置的当前字符,直接在命令模式下
Rreplace,替换光标及其后面的多个字符,按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种方法从命令模式进入编辑模式

命令作用使用频率
iinsert,在当前光标所在字符前面插入文本常用
IInsert,在当前光标所在行首插入文本较常用
oon,在当前光标所在行的后一行插入一个空行常用
OOn,在当前光标所在行的前一行插入一个空行常用
aappend,在当前光标所在字符后面插入文本不常用
AAppend,在当前光标所在行尾插入文本较常用

2.3 底行模式

命令模式下输入 : 进入底行模式,ESC退出到命令模式

命令功能
:wwrite,保存文件
:qquit,推出文档,未保存时不准退出
:q!quit,强行退出文档
:wqwrite and quit,保存并退出文档
:x同 wq,write and quit,保存并退出文档
:eedit,在vim编辑环境下直接切换编辑文件,在切换之前修改过的文件必须已被保存
:n 文件名new,在vim编辑环境下直接新建文件
:w 文件名write,将当前文件另存为新文件。但编辑的仍然是当前文件,而不是另存为的新文件。在实际开发中,用作阶段性文件备份。
:spsplit,横向分屏,上下分屏,同时打开多个文件,每个文件一个窗口
:vspvertical split,竖直分屏,左右分屏,同时打开多个文件,每个文件一个窗口
切换分屏窗口,先按下Ctrl+W进入窗口命令中,再输入以下窗口命令进行操作
wwindow,切换到下一个窗口
rreverse,互换窗口
cclose,关闭当前窗口,但不能关闭最后一个窗口
qquit,退出当前窗口,如果是最后一个窗口,则退出vim
oother,关闭其它窗口