linux相关指令及vim基础插件配置

shell指令


  • 传输文件scp指令 https://zhuanlan.zhihu.com/p/542926236

  • mkdir -p [PATH] 级联创建目录

  • 查看文件

    • cat -s [FILE] 查看文件内容并删除多余空行
    • tail -[n] [FILE]
    • head -[n] [file]
  • 查看命令历史

    • history -[n,option]
  • 打印文件内容(把string输出到某个文件,默认到终端)

    • echo -[file] 例如打印环境变量 echo $PATH
  • 通配符

    *
        匹配任意长度的字符串
    ?
        匹配一个长度的字符
    [abc]
    	匹配abc中一个字符
    [a-z]
        匹配a到z之间的一个字符
    [^a]
        匹配除了a之外的内容
    
  • 管道‘’|‘’与wc

    • 例如:ls usr/bin |wc -w 查看bin目录下多少个文件,wc统计单词命令
  • grep与管道结合 例如:ps -ef|grep bash

  • 输入多个指令用 " ; " 相隔

  • ctrl命令

    • ctrl+d 结束命令
    • ctrl+l 清屏
    • ctrl+c 中断任务
    • ctrl+z 将任务放入后台(jobs、fg [n]、bg[n]、)
  • 输入输出重定向

    重定向符
        > file 	输出到file,新建模式,已存在就删除再新建
        >> file	输出到file,追加模式
        < file	将file作为输入
        2>&>	将由命令产生的错误信息输入到文件中
    
  • 命令置换使用 `` 或$()

    例如  ls  `pwd` 或  ls $(pwd)将pwd执行结果作为ls的参数
        
    
  • 环境变量 export或env

  • diff指令与patch包

    diff hello1.c hello2.c > test.patch  //“<”跟着要删除的内容,“>”跟着要增加的内容
    

vim命令


  • vim常用指令
编辑模式:
    aio,AIO//小写编辑,大写一般用来快速定位;A:行尾 I:行首;O:上方插一行;o:下方插一行
底行指令:
    :!pwd
    :!date
    :q
    :q!
    :x	//保存退出
    :wq	//保存退出
    :w	//保存文件,不退出
    :w	[file]	//另存为文件,不退出
    :r	[file]	//在当前文件光标处插入读取的文件内容
复制粘贴
    [n]x	//删除光标开始的n个字符
    [n]dd
    [n]yy
    p或P	//粘贴
    u	//取消上一次操作
进阶
  跳转:
    :[n]	//移动光标到指定一行
	1G		//移动到文首
    G		//移动到文末
 	:set nu	//添加行号
    :set nonu	//取消行号
  查找:
    /[string]	//查找string
    	n	//下一个
        N	//上一个
    	支持正则表达式:
        	/^[string]	//查找以string开头的行
   替换:
     :s/str1/str2
     :s/str1/str2/g	//全文替换
     :.,$s/str1/str2	//.当前行;$最后一行
   精细化复制剪切:
     y0	//行首至光标复制
     y$	//光标至行尾复制
     d0
     d$
   块复制删除: 
     :.,$y
     :.,$d
         
  • 使用vim-plug进行vim扩展
  • vim.zip
## 安装vim-plug
地址:https://github.com/junegunn/vim-plug
将plug.vim下载下来,在.vim目录下新建个autoload,丢进去

## 打开vim,使用PlugInstall

##打开.vimrc,进行以下配置

call plug#begin('~/.vim/plugged')
Plug 'scrooloose/nerdtree'
Plug 'majutsushi/tagbar'
Plug 'kien/rainbow_parentheses.vim'
Plug 'airblade/vim-gitgutter'
Plug 'scrooloose/nerdcommenter'
Plug 'rking/ag.vim'
Plug 'altercation/vim-colors-solarized'
Plug 'jiangmiao/auto-pairs'
Plug 'valloric/youcompleteme'
call plug#end()

"配置基础设置
set nu
set ts=4

"" NerdTree插件的配置,文件树状图
" 打开vim时,自动打开NERDTree
"autocmd vimenter * NERDTree
" 将F2设置为开关NERDTree的快捷键
map <F2> :NERDTreeMirror<CR>
map <f2> :NERDTreeToggle<cr>
" 修改树的显示图标
let g:NERDTreeDirArrowExpandable = '+'
let g:NERDTreeDirArrowCollapsible = '-'
" 窗口位置
let g:NERDTreeWinPos='left'
" 窗口尺寸
let g:NERDTreeSize=10
" 窗口是否显示行号
let g:NERDTreeShowLineNumbers=1
" 不显示隐藏文件
let g:NERDTreeHidden=0

"" nerdcommenter配置,快接注释
" <leader>c<space> 注释/取消注释
" <leader>cc // 注释
" <leader>cm 只用一组符号注释
" <leader>cA 在行尾添加注释
" <leader>c$ /* 注释 */
" <leader>cs /* 块注释 */
" <leader>cy 注释并复制
" <leader>ca 切换 // 和 /* */
" <leader>cu 取消注释
" 注释的时候自动加个空格(可选)
" let g:NERDSpaceDelims=1

"" tagbar设置,变量显示窗口
" 设置tagbar使用的ctags的插件
let g:tagbar_ctags_bin='/usr/bin/ctags'
" 设置tagbar的窗口宽度
let g:tagbar_width=30
" 设置tagbar的窗口显示的位置,为左边
let g:tagbar_left=1
" 打开文件自动 打开tagbar
" autocmd BufReadPost *.cpp,*.c,*.h,*.hpp,*.cc,*.cxx call tagbar#autoopen()
" 映射tagbar的快捷键
map <F3> :TagbarToggle<CR>

"" rainbow_parentheses设置,彩虹括号
" 自动开启以及颜色配置
let g:rbpt_colorpairs = [
                        \ ['brown',       'RoyalBlue3'],
                        \ ['Darkblue',    'SeaGreen3'],
                        \ ['darkgray',    'DarkOrchid3'],
                        \ ['darkgreen',   'firebrick3'],
                        \ ['darkcyan',    'RoyalBlue3'],
                        \ ['darkred',     'SeaGreen3'],
                        \ ['darkmagenta', 'DarkOrchid3'],
                        \ ['brown',       'firebrick3'],
                        \ ['gray',        'RoyalBlue3'],
                        \ ['darkmagenta', 'DarkOrchid3'],
                        \ ['Darkblue',    'firebrick3'],
                        \ ['darkgreen',   'RoyalBlue3'],
                        \ ['darkcyan',    'SeaGreen3'],
                        \ ['darkred',     'DarkOrchid3'],
                        \ ['red',         'firebrick3'],
                        \ ]
let g:rbpt_max = 16
let g:rbpt_loadcmd_toggle = 0
au VimEnter * RainbowParenthesesToggle
au Syntax * RainbowParenthesesLoadRound
au Syntax * RainbowParenthesesLoadSquare
au Syntax * RainbowParenthesesLoadBraces

"" 配置solarized主题色
" SSH连接终端使用solarized Dark主题
"if $SSH_CONNECTION
"    syntax enable
"    set background=dark
"    colorscheme solarized
"endif

"" 设置autopairs
" 添加<>
" let g:AutoPairs['<']='>'

"" 设置youcompleteme补全插件

set nocompatible 
let g:ycm_global_ycm_extra_conf='~/.vim/plugged/YouCompleteMe/.ycm_extra_conf.py'
let g:ycm_show_diagnostics_ui = 0                  " 关闭语法提示
let g:ycm_complete_in_comments=1                   " 补全功能在注释中同样有效
let g:ycm_confirm_extra_conf=0                     " 允许 vim 加载 .ycm_extra_conf.py 文件,不再提示
let g:ycm_collect_identifiers_from_tags_files=1    " 开启 YCM 标签补全引擎
let g:ycm_min_num_of_chars_for_completion=1        " 从第1个键入字符就开始罗列匹配项
let g:ycm_cache_omnifunc=0                         " 禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_seed_identifiers_with_syntax=1           " 语法关键字补全
let g:ycm_goto_buffer_command = 'horizontal-split' " 跳转打开上下分屏
" 配置ycm颜色
"highlight PMenu ctermfg=0 ctermbg=242 guifg=yellow guibg=white
"highlight PMenuSel ctermfg=242 ctermbg=8 guifg=white guibg=yellow
let g:ycm_semantic_triggers =  {
			\ 'c,cpp,python,java,go,erlang,perl': ['re!\w{2}'],
			\ 'cs,lua,javascript': ['re!\w{2}'],
			\ }
let g:ycm_filetype_whitelist = {
			\ "c":1,
			\ "cpp":1,
			\ "objc":1,
            \ "py":1,
			\ "sh":1,
			\ }

shell脚本编程

  • 在.sh文件中有以下命名规则 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2NslF2rW-1685452309803)(D:\BaiduSyncdisk\笔记\image-20221208132444583.png)]

  • shell功能性语句

    #!/bin/sh或/bin/bash  表明执行编译器
    read var1 var2 ... #read读取输入
    
    算数运算命令 expr   (+,-,\*,/,%)
        例如:A=`expr 3 + 5 \* 4` 注意算数运算需要空格
    
    测试命令 test   -eq -ne -gt -lt -ge -le -d
    
  • 条件语句

    if [ expression1 ]  #注意空格
    then
    	expression2
    	exit
    elif [ expression3 ]
    then
    	expression4
    	exit
    else
    	expression5
    fi
    
  • 选择语句

    #!/bin/bash
    
    echo -n "please choose(yes|no)?"
    read A
    case $A in
    	yes | YES | Y | y | Yes)
    		echo "yes"
    		;;
        no)
        	echo "no"
        	;;
        *)
        	echo "wrong"
        	;;
    esac
        	
    
  • 循环语句

    #!/bin/bash
    
    for I in `seq 1 2 10`    #seq指令,1-10,步长为2
    do
    	echo "I"
    done
    另一种写法
    for ((I=1 ; I <=10 ; I++))
    do
    	echo "I"
    done
    
    I=0
    while [ $I -lt 5]
    do
    	I=`expr $I + 1`
    	echo "$I"
    done
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值