• WSL 服务自动启动


    WSL 服务自动启动

    参考 https://zhuanlan.zhihu.com/p/47733615

    Windows 启用 WSL 功能支持

    > Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

    在Windows应用商店中下载安装 Ubuntu 系统

    Ubuntu 系统设置更新源设置为国内更新源

    lsgx@DESKTOP-OS0DFSI:~$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
    lsgx@DESKTOP-OS0DFSI:~$ sudo cat /etc/apt/sources.list
    # See https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
    # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
    deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
    deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
    deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
    deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
    
    # 预发布软件源,不建议启用
    #deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
    #deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

    lsgx@DESKTOP-OS0DFSI:~$ 

    Ubuntu 系统升级更新

    lsgx@DESKTOP-OS0DFSI:~$ sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y && sudo apt-get autoremove -y

    Ubuntu 系统安装 ssh 服务

    lsgx@DESKTOP-OS0DFSI:~$ sudo apt-get install aptitude
    lsgx@DESKTOP-OS0DFSI:~$ 
    lsgx@DESKTOP-OS0DFSI:~$ sudo aptitude purge openssh-server openssh-sftp-server
    lsgx@DESKTOP-OS0DFSI:~$ sudo aptitude install openssh-server openssh-sftp-server
    lsgx@DESKTOP-OS0DFSI:~$ 
    lsgx@DESKTOP-OS0DFSI:~$ sudo cat /etc/ssh/sshd_config
    #       $OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $
    
    # This is the sshd server system-wide configuration file.  See
    # sshd_config(5) for more information.
    
    # Restart ssh service command : sudo service ssh --full-restart
    
    # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
    
    # The strategy used for options in the default sshd_config shipped with
    # OpenSSH is to specify options with their default value where
    # possible, but leave them commented.  Uncommented options override the
    # default value.
    
    Port 2222
    #AddressFamily any
    ListenAddress 0.0.0.0
    #ListenAddress ::
    
    #HostKey /etc/ssh/ssh_host_rsa_key
    #HostKey /etc/ssh/ssh_host_ecdsa_key
    #HostKey /etc/ssh/ssh_host_ed25519_key
    
    # Ciphers and keying
    #RekeyLimit default none
    
    # Logging
    #SyslogFacility AUTH
    #LogLevel INFO
    
    # Authentication:
    
    #LoginGraceTime 2m
    PermitRootLogin no
    #StrictModes yes
    #MaxAuthTries 6
    #MaxSessions 10
    
    #PubkeyAuthentication yes
    
    # Expect .ssh/authorized_keys2 to be disregarded by default in future.
    #AuthorizedKeysFile     .ssh/authorized_keys .ssh/authorized_keys2
    
    #AuthorizedPrincipalsFile none
    
    #AuthorizedKeysCommand none
    #AuthorizedKeysCommandUser nobody
    
    # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
    #HostbasedAuthentication no
    # Change to yes if you don't trust ~/.ssh/known_hosts for
    # HostbasedAuthentication
    #IgnoreUserKnownHosts no
    # Don't read the user's ~/.rhosts and ~/.shosts files
    #IgnoreRhosts yes
    
    # To disable tunneled clear text passwords, change to no here!
    PasswordAuthentication yes
    #PermitEmptyPasswords no
    
    # Change to yes to enable challenge-response passwords (beware issues with
    # some PAM modules and threads)
    ChallengeResponseAuthentication no
    
    AllowUsers lsgx
    
    # Kerberos options
    #KerberosAuthentication no
    #KerberosOrLocalPasswd yes
    #KerberosTicketCleanup yes
    #KerberosGetAFSToken no
    
    # GSSAPI options
    #GSSAPIAuthentication no
    #GSSAPICleanupCredentials yes
    #GSSAPIStrictAcceptorCheck yes
    #GSSAPIKeyExchange no
    
    # Set this to 'yes' to enable PAM authentication, account processing,
    # and session processing. If this is enabled, PAM authentication will
    # be allowed through the ChallengeResponseAuthentication and
    # PasswordAuthentication.  Depending on your PAM configuration,
    # PAM authentication via ChallengeResponseAuthentication may bypass
    # the setting of "PermitRootLogin without-password".
    # If you just want the PAM account and session checks to run without
    # PAM authentication, then enable this but set PasswordAuthentication
    # and ChallengeResponseAuthentication to 'no'.
    UsePAM yes
    
    #AllowAgentForwarding yes
    #AllowTcpForwarding yes
    #GatewayPorts no
    X11Forwarding yes
    #X11DisplayOffset 10
    #X11UseLocalhost yes
    #PermitTTY yes
    PrintMotd no
    #PrintLastLog yes
    #TCPKeepAlive yes
    #UseLogin no
    #PermitUserEnvironment no
    #Compression delayed
    #ClientAliveInterval 0
    #ClientAliveCountMax 3
    #UseDNS no
    #PidFile /var/run/sshd.pid
    #MaxStartups 10:30:100
    #PermitTunnel no
    #ChrootDirectory none
    #VersionAddendum none
    
    # no default banner path
    #Banner none
    
    # Allow client to pass locale environment variables
    AcceptEnv LANG LC_*
    
    # override default of no subsystems
    Subsystem       sftp    /usr/lib/openssh/sftp-server
    
    # Example of overriding settings on a per-user basis
    #Match User anoncvs
    #       X11Forwarding no
    #       AllowTcpForwarding no
    #       PermitTTY no
    #       ForceCommand cvs server
    lsgx@DESKTOP-OS0DFSI:~$ 
    lsgx@DESKTOP-OS0DFSI:~$ sudo service ssh --full-restart
    lsgx@DESKTOP-OS0DFSI:~$ 

    Windows 防火墙中开放 2222 端口拨入

    Ubuntu 系统添加启动脚本文件 /etc/init.wsl

    lsgx@DESKTOP-OS0DFSI:~$ sudo aptitude install supervisor
    lsgx@DESKTOP-OS0DFSI:~$ 
    lsgx@DESKTOP-OS0DFSI:~$ sudo cat /etc/init.wsl
    #! /bin/sh
    # Filename: /etc/init.wsl
    # Usage: sudo /etc/init.wsl [start|stop|restart]
    
    /etc/init.d/cron $1
    /etc/init.d/ssh $1
    /etc/init.d/supervisor $1
    
    lsgx@DESKTOP-OS0DFSI:~$
    lsgx@DESKTOP-OS0DFSI:~$ sudo chmod +x /etc/init.wsl
    lsgx@DESKTOP-OS0DFSI:~$ 
    lsgx@DESKTOP-OS0DFSI:~$ sudo cat /etc/sudoers
    #
    # This file MUST be edited with the 'visudo' command as root.
    #
    # Please consider adding local content in /etc/sudoers.d/ instead of
    # directly modifying this file.
    #
    # See the man page for details on how to write a sudoers file.
    #
    Defaults        env_reset
    Defaults        mail_badpass
    Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
    
    # Host alias specification
    
    # User alias specification
    
    # Cmnd alias specification
    
    # User privilege specification
    root    ALL=(ALL:ALL) ALL
    
    # Members of the admin group may gain root privileges
    %admin ALL=(ALL) ALL
    
    # Allow members of group sudo to execute any command
    %sudo   ALL=(ALL:ALL) ALL
    %sudo   ALL=NOPASSWD: /etc/init.wsl
    
    # See sudoers(5) for more information on "#include" directives:
    
    #includedir /etc/sudoers.d
    lsgx@DESKTOP-OS0DFSI:~$ 

    Windows 中添加自动启动的脚本 startubuntu.vbs 。

    a. 打开当前用户默认自启动加载文件夹,在 Windows 中,开始-运行,输入:

    shell:startup

    b. 在当前用户默认自启动加载文件夹中,添加要加载的VBS脚本文件 startubuntu.vbs 。

    Set ws = WScript.CreateObject("WScript.Shell")
    ws.run "ubuntu run sudo /etc/init.wsl start", vbhide

    重启 Windows 系统,验证WSL服务是否自动启动。

    查看 Ubuntu 系统启动的服务列表

    lsgx@DESKTOP-OS0DFSI:~$ sudo service --status-all
     [ - ]  acpid
     [ - ]  apparmor
     [ ? ]  apport
     [ - ]  atd
     [ - ]  console-setup.sh
     [ + ]  cron
     [ ? ]  cryptdisks
     [ ? ]  cryptdisks-early
     [ - ]  dbus
     [ - ]  ebtables
     [ ? ]  hwclock.sh
     [ + ]  irqbalance
     [ + ]  iscsid
     [ - ]  keyboard-setup.sh
     [ - ]  kmod
     [ - ]  lvm2
     [ + ]  lvm2-lvmetad
     [ + ]  lvm2-lvmpolld
     [ - ]  lxcfs
     [ - ]  lxd
     [ - ]  mdadm
     [ - ]  mdadm-waitidle
     [ + ]  open-iscsi
     [ - ]  open-vm-tools
     [ ? ]  plymouth
     [ ? ]  plymouth-log
     [ - ]  procps
     [ - ]  rsync
     [ - ]  rsyslog
     [ - ]  screen-cleanup
     [ + ]  ssh
     [ + ]  supervisor
     [ - ]  udev
     [ - ]  ufw
     [ - ]  unattended-upgrades
     [ - ]  uuidd
     [ - ]  x11-common
    lsgx@DESKTOP-OS0DFSI:~$ 

    开发环境软件安装

    $ sudo aptitude install tree
    $ sudo aptitude install curl
    $ sudo aptitude install wget $ sudo aptitude install htop
    $ sudo aptitude install bash bash-completion $ sudo aptitude install xterm $ sudo aptitude install tmux $ sudo aptitude install p7zip-full $ sudo aptitude install dmidecode $ sudo aptitude install pciutils $ sudo aptitude install psmisc $ sudo aptitude install v86d
    $ sudo aptitude install hwinfo $ sudo aptitude install lshw $ sudo aptitude install smartmontools $ sudo aptitude install build-essential $ sudo aptitude install gdb gdb-doc cgdb $ sudo aptitude install perl perl-doc $ sudo aptitude install guile-2.0 guile-2.0-libs guile-2.2-doc
    $ sudo aptitude install chezscheme $ sudo aptitude install expect $ sudo aptitude install autoconf automake $ sudo aptitude install libtool libtool-bin libtool-doc $ sudo aptitude install cmake cmake-curses-gui cmake-doc $ sudo aptitude install git git-doc $ sudo aptitude install subversion subversion-tools $ sudo aptitude install fakeroot $ sudo aptitude install valgrind $ sudo aptitude install bison $ sudo aptitude install flex flex-doc $ sudo aptitude install swig $ sudo aptitude install libncurses5-dev $ sudo aptitude install libssl-dev $ sudo aptitude install libiconv-hook-dev $ sudo aptitude install dpkg-dev $ sudo aptitude install kernel-package $ sudo aptitude install linux-headers-`uname -r` $ sudo aptitude install locales language-selector-common $ sudo aptitude install language-pack-en language-pack-en-base $ sudo aptitude install language-pack-zh-hans language-pack-zh-hans-base $
    lsgx@DESKTOP-OS0DFSI:~$ cat /var/lib/locales/supported.d/local 
    en_US.UTF-8 UTF-8
    zh_CN.UTF-8 UTF-8
    zh_SG.UTF-8 UTF-8
    lsgx@DESKTOP-OS0DFSI:~$ 
    lsgx@DESKTOP-OS0DFSI:~$ 
    lsgx@DESKTOP-OS0DFSI:~$ cat /etc/default/locale
    #  File generated by update-locale
    LANG="en_US.UTF-8"
    LANGUAGE="en_US:en"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_PAPER="en_US.UTF-8"
    LC_NAME="en_US.UTF-8"
    LC_ADDRESS="en_US.UTF-8"
    LC_TELEPHONE="en_US.UTF-8"
    LC_MEASUREMENT="en_US.UTF-8"
    LC_IDENTIFICATION="en_US.UTF-8"
    lsgx@DESKTOP-OS0DFSI:~$ 
    lsgx@DESKTOP-OS0DFSI:~$ 
    lsgx@DESKTOP-OS0DFSI:~$ cat ~/.vimrc 
    " An example for a vimrc file.
    "
    " Maintainer:   Bram Moolenaar <Bram@vim.org>
    " Last change:  2001 Jul 18
    "
    " To use it, copy it to
    "     for Unix and OS/2:  ~/.vimrc
    "         for Amiga:  s:.vimrc
    "  for MS-DOS and Win32:  $VIM\_vimrc
    "       for OpenVMS:  sys$login:.vimrc
    
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " 一般设定
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " 设定默认解码
    set guifont=-misc-simsun-medium-r-normal-*-*-120-*-*-c-*-iso10646-1
    set bsdir=buffer
    set enc=utf-8
    set fenc=utf-8
    set fencs=utf-8,ucs-bom,gb2312,cp936,gbk,big5
    set langmenu=zh_CN.UTF-8
    set encoding=utf-8
    set fileencoding=utf-8
    set fileencodings=utf-8,ucs-bom,latin1,gb2312,gb18030,cp936,gbk,big5
    set termencoding=utf-8
    
    "设置颜色
    colorscheme desert
    
    "set guifont=Nimbus Mono L 12
    "set guifont=WenQuanYi Bitmap Song 12
    "set guifont=Verdana 10
    "set guifont=Courier 11
    "set guifont=Bitstream Vera Sans Mono 10
    
    " 显示中文帮助
    if version >= 603
        set helplang=cn
        set encoding=utf-8
    endif
    
    " Use Vim settings, rather then Vi settings (much better!).
    " This must be first, because it changes other options as a side effect.
    " 不要使用vi的键盘模式,而是vim自己的键盘模式
    set nocompatible
    
    " history文件中需要记录的行数
    set history=100
    
    " 显示行号
    set number
    
    " 在处理未保存或只读文件的时候,弹出确认
    set confirm
    
    " 与windows共享剪贴板
    set clipboard+=unnamed
    
    " 侦测文件类型
    filetype on
    
    " 载入文件类型插件
    filetype plugin on
    
    " 为特定文件类型载入相关缩进文件
    filetype indent on
    
    " 保存全局变量
    set viminfo+=!
    
    " 带有如下符号的单词不要被换行分割
    set iskeyword+=_,$,@,%,#,-
    
    " 语法高亮显示
    syntax on
    
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    """"""高亮显示gtk关键字""""""
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    syntax keyword gtkType gint gshort guint gushort gulong gdouble gfloat gchar guchar gboolean gpointer
    highlight link gtkType Type
    
    " 高亮字符,让其不受100列限制
    highlight OverLength ctermbg=red ctermfg=white guibg=red guifg=white
    match OverLength '\%101v.*'
    
    " 状态行颜色
    highlight StatusLine guifg=SlateBlue guibg=Yellow
    highlight StatusLineNC guifg=Gray guibg=White
    
    
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " 文件设置
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " 不要备份文件(根据自己需要取舍)
    set nobackup
    
    " 不要生成swap文件,当buffer被丢弃的时候隐藏它
    setlocal noswapfile
    set bufhidden=hide
    
    " 字符间插入的像素行数目
    set linespace=0
    
    " 增强模式中的命令行自动完成操作
    set wildmenu
    
    " 在状态行上显示光标所在位置的行号和列号
    set ruler
    set rulerformat=%20(%2*%<%f%= %m%r %3l %c %p%%%)
    
    " 输入的命令显示出来,看的清楚些
    set showcmd
    
    " 命令行(在状态行下)的高度,默认为1,这里是2
    set cmdheight=2
    
    " 使回格键(backspace)正常处理indent, eol, start等
    set backspace=indent,eol,start
    
    " 跨行移动
    set whichwrap=b,s,<,>,[,]
    
    " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
    "set mouse=a
    "set selection=exclusive
    "set selectmode=mouse,key
    
    " 启动的时候不显示那个援助乌干达儿童的提示
    set shortmess=atI
    
    " 通过使用: commands命令,告诉我们文件的哪一行被改变过
    set report=0
    
    " 不让vim发出讨厌的滴滴声
    set noerrorbells
    
    " 在被分割的窗口间显示空白,便于阅读
    set fillchars=vert: ,stl: ,stlnc:
    
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " 搜索和匹配
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " 高亮显示匹配的括号
    set showmatch
    
    " 匹配括号高亮的时间(单位是十分之一秒)
    set matchtime=5
    
    " 在搜索的时候忽略大小写
    set ignorecase
    
    " 不要高亮被搜索的句子(phrases)
    set nohlsearch
    
    " 在搜索时,输入的词句的逐字符高亮(类似firefox的搜索)
    set incsearch
    
    " 制表符可见
    "set list
    
    " 输入:set list命令是应该显示些啥?
    set listchars=tab:| ,trail:.,extends:>,precedes:<,eol:$
    
    " 光标移动到buffer的顶部和底部时保持3行距离
    set scrolloff=3
    
    " 不要闪烁
    set novisualbell
    
    " 我的状态行显示的内容(包括文件类型和解码)
    set statusline=%F%m%r%h%w [FORMAT=%{&ff}] [TYPE=%Y] [POS=%l,%v][%p%%] %{strftime("%d/%m/%y - %H:%M")}
    
    " 总是显示状态行
    set laststatus=2
    
    " 屏幕放不下时,按一次屏幕移动一个字符
    set sidescroll=1
    
    " 下面的滚动条开启
    "slet g:netrw_winsize = 20et guioptions+=b
    
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " 文本格式和排版
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " 自动格式化
    set formatoptions=tcrqn
    
    " 继承前一行的缩进方式,特别适用于多行注释
    set autoindent
    
    " 为C程序提供自动缩进
    set smartindent
    
    " 使用C样式的缩进
    set cindent
    
    " 制表符为4
    set tabstop=4
    
    " 统一缩进为4
    set softtabstop=4
    set shiftwidth=4
    
    " 不要用空格代替制表符
    set noexpandtab
    
    " 不要换行
    set nowrap
    
    " 在行和段开始处使用制表符
    set smarttab
    
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " CTags的设定
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " 按照名称排序
    let Tlist_Sort_Type = "name"
    
    " 在右侧显示窗口
    let Tlist_Use_Right_Window = 1
    
    " 压缩方式
    let Tlist_Compart_Format = 1
    
    " 如果只有一个buffer,kill窗口也kill掉buffer
    let Tlist_Exist_OnlyWindow = 1
    
    " 不要关闭其他文件的tags
    let Tlist_File_Fold_Auto_Close = 0
    
    " 不要显示折叠树
    let Tlist_Enable_Fold_Column = 0
    
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " 键盘命令
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "imap <C-P> <C-X><C-P>
    "imap <C-F> <C-X><C-F>
    "imap <C-I> <C-X><C-I>
    "imap <C-D> <C-X><C-D>
    "imap <C-L> <C-X><C-L>
    
    " 根据打开文件类型, 启用智能补全
    set completeopt=longest,menu
    " p命令可以使用剪切板上的内容来替换选中的内容
    vnoremap p <Esc>:let current_reg = @"<CR>gvs<C-R>=current_reg<CR><Esc>
    
    nmap <F2> :nohlsearch<CR>
    map <F3> :copen<CR>:grep -R
    map <F7> :w<CR><CR>:copen<CR>:make<CR><CR>
    imap <F7> <Esc>:w<CR><CR>:copen<CR>:make<CR><CR>
    map <F8> :cclose<CR>
    map <F9> :TlistToggle<CR>
    
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " 代码折叠编译运行按键命令
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示
    
    if has("autocmd")
        autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby set number
        autocmd FileType xml,html vmap <C-o> <ESC>'<i<!--<ESC>o<ESC>'>o-->
        autocmd FileType java,c,cpp,cs vmap <C-o> <ESC>'<o/*<ESC>'>o*/
        autocmd FileType html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal textwidth=78
        autocmd Filetype html,xml,xsl source $VIMRUNTIME/plugin/closetag.vim
                     if line("'"") > 0 && line("'"") <= line("{1}quot;) |
                       exe "normal g`"" |
                     endif
    endif " has("autocmd")
    
    " F5编译和运行C程序,F6编译和运行C++程序
    " 请注意,下述代码在windows下使用会报错
    " 需要去掉./这两个字符
    
    " C的编译和运行
    map <F5> :call CompileRunGcc()<CR>
    func! CompileRunGcc()
        exec "w"
        exec "!gcc % -o %<"
        exec "! ./%<"
    endfunc
    
    " C++的编译和运行
    map <F6> :call CompileRunGpp()<CR>
    func! CompileRunGpp()
        exec "w"
        exec "!g++ % -o %<"
        exec "! ./%<"
    endfunc
    
    " 能够漂亮地显示.NFO文件
    set encoding=utf-8
    function! SetFileEncodings(encodings)
        let b:myfileencodingsbak=&fileencodings
        let &fileencodings=a:encodings
    endfunction
    function! RestoreFileEncodings()
        let &fileencodings=b:myfileencodingsbak
        unlet b:myfileencodingsbak
    endfunction
    
    au BufReadPre *.nfo call SetFileEncodings('cp437')|set ambiwidth=single
    au BufReadPost *.nfo call RestoreFileEncodings()
    
    " 高亮显示普通txt文件(需要txt.vim脚本)
    au BufRead,BufNewFile *  setfiletype txt
    
    " 用空格键来开关折叠
    set foldenable
    "set foldmethod=manual
    set foldmethod=syntax
    set foldlevel=100
    nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
    
    " minibufexpl插件的一般设置
    let g:miniBufExplMapWindowNavVim = 1
    let g:miniBufExplMapWindowNavArrows = 1
    let g:miniBufExplMapCTabSwitchBufs = 1
    let g:miniBufExplModSelTarget = 1
    
    "设置快捷方式 Set mapleader
    let mapleader = ","
    
    "快捷加载,当输入",ss"时,加载  .vimrc 文件
    map <silent> <leader>ss :source ~/.vimrc<cr>
    "快速打开编辑 .vimrc配置文件--->",ee"
    map <silent> <leader>ee :e ~/.vimrc<cr>
    "快速保存文件--->",w"
    map <silent> <leader>w :w<cr>
    "快速保存并退出文件--->",w"
    map <silent> <leader>wq :wq<cr>
    
    "自动命令,每次写入.vimrc后,都会执行这个自动命令,source一次~/.vimrc
    autocmd! bufwritepost .vimrc source ~/.vimrc
    
    lsgx@DESKTOP-OS0DFSI:~$ 
    lsgx@DESKTOP-OS0DFSI:~$ 
    lsgx@DESKTOP-OS0DFSI:~$ cat ~/.tmux.conf 
    #
    # author   : lsgx <lsgxthink@gmail.com>
    # modified : 2014-11-12
    #
    
    #-- base settings --#
    set -g default-terminal "screen-256color"  # 设置终端缺省的支持颜色为256色
    set -g display-time 3000     # 提示信息的持续时间;设置足够的时间以避免看不清提示,单位为毫秒
    set -g escape-time 0    # 等待时间的持续时间;设置越小越好
    set -g history-limit 65535    # 历史记录条数的最大限制值
    #set -g base-index 1    # 窗口的初始序号;默认为0,这里设置为1
    #set -g pane-base-index 1    # 面板的初始序号;默认为0,这里设置为1
    #set -sg repeat-time 600    # 控制台激活后的持续时间;设置合适的时间以避免每次操作都要先激活控制台,单位为毫秒
    #set -s quiet on
    #setw -g xterm-keys on
    
    #-- bindkeys --#
    
    # prefix key (Ctrl+a)    # 将激活控制台的快捷键由Ctrl+b修改为Ctrl+a
    set -g prefix ^a
    unbind ^b
    bind a send-prefix
    
    # split window    # 窗口分割
    unbind '"'
    bind - splitw -v # vertical split (prefix -)    # 上下分割窗口
    unbind %
    bind | splitw -h # horizontal split (prefix |)    # 左右分割窗口
    
    # select pane    # 选择面板
    bind k selectp -U # above (prefix k)    # 选择上面板
    bind j selectp -D # below (prefix j)    # 选择下面板
    bind h selectp -L # left (prefix h)    # 选择左面板
    bind l selectp -R # right (prefix l)    # 选择右面板
    
    # resize pane
    bind -r ^k resizep -U 2 # upward (prefix Ctrl+k)    # 当前面板上移2
    bind -r ^j resizep -D 2 # downward (prefix Ctrl+j)    # 当前面板下移2
    bind -r ^h resizep -L 2 # to the left (prefix Ctrl+h)    # 当前面板左移2
    bind -r ^l resizep -R 2 # to the right (prefix Ctrl+l)    # 当前面板右移2
    
    # swap pane
    bind ^u swapp -U # swap with the previous pane (prefix Ctrl+u)    # 与上面板交换
    bind ^d swapp -D # swap with the next pane (prefix Ctrl+d)    # 与下面板交换
    
    # create new session
    bind C-c new-session    # 创建一个新的会话
    
    # control sessions
    bind z kill-session    # 结束一个会话
    
    # find session
    bind C-f command-prompt -p find-session 'switch-client -t %%'    # 查找会话
     
    # clear both screen and history
    #bind -n C-l send-keys C-l ; run 'tmux clear-history'    # 清空屏幕内容和历史记录
    
    # reload config (prefix r)
    bind r source ~/.tmux.conf ; display "Configuration reloaded!"    # 重新加载配置文件
    
    # misc
    bind e lastp  # select the last pane (prefix e)    # 选择最后一个面板
    bind ^e last  # select the last window (prefix Ctrl+e)    # 选择最后一个窗口
    bind q killp  # kill pane (prefix q)    # 关闭当前面板
    bind ^q killw # kill window (prefix Ctrl+q)    # 关闭当前窗口
    
    
    # app
    bind ! splitw htop                                     # htop (prefix !)
    bind m command-prompt "splitw 'exec man %%'"           # man (prefix m)
    bind @ command-prompt "splitw 'exec perldoc -t -f %%'" # perl func (prefix @)
    bind * command-prompt "splitw 'exec perldoc -t -v %%'" # perl var (prefix *)
    bind % command-prompt "splitw 'exec perldoc -t %%'"    # perl doc (prefix %)
    bind / command-prompt "splitw 'exec ri %%'"            # ruby doc (prefix /)
    
    
    #-- statusbar --#
    #set -g status-utf8 on    # 开启状态栏的UTF-8支持
    set -g status-interval 1    # 状态栏的分辨时间间隔
    set -g status-keys vi    # 操作状态栏时的默认键盘布局;可以设置为vi或emacs
    set -g visual-activity on    # 开启窗口操作的可视
    set -g set-clipboard on    # 开启剪切板
    set -g display-panes-time 800 # slightly longer pane indicators display time    # 稍长的窗格中显示的时间指标
    set -g display-time 1000      # slightly longer status messages display time    # 稍长的状态消息的显示时间
    set -g renumber-windows on    # renumber windows when a window is closed    # 关闭窗口后重新编号
    
    setw -g automatic-rename on    # rename window to reflect current program    # 重命名窗口,以反映当前的程序
    #setw -g utf8 on    # 开启窗口的UTF-8支持
    setw -g monitor-activity on    # 开启窗口活动监视
    setw -g mode-keys vi    # 复制模式中的默认键盘布局;可以设置为vi或emacs
    setw -g clock-mode-style 24 # 24 hour clock    # 24小时显示方式
    #setw -g mode-mouse on    # 开启鼠标模式
    
    # copy mode
    bind Enter copy-mode # enter copy mode    # 按Enter进入复制模式
    bind b list-buffers  # list paster buffers    # 复制缓冲区列表
    bind p paste-buffer  # paste from the top pate buffer    # 粘贴最后复制的缓冲区内容
    bind P choose-buffer # choose which buffer to paste from    # 选择粘贴缓冲区
    
    # the following vi-copy bindings match my vim settings
    # see https://github.com/gpakosz/.vim.git
    #bind -t vi-copy v begin-selection    # 复制模式下开始选取
    #bind -t vi-copy C-v rectangle-toggle    # 复制模式下矩形选取
    #bind -t vi-copy y copy-selection    # 复制模式下复制选取的内容
    #bind -t vi-copy Escape cancel    # 复制模式下退出复制模式
    #bind -t vi-copy H start-of-line    # 复制模式下开始行选取
    #bind -t vi-copy L end-of-line    # 复制模式下结束行选取
    
    # mouse resize selcet
    #setw -g mouse-resize-pane on    # 鼠标调整面板大小
    #setw -g mouse-select-pane on    # 鼠标选择面板
    #setw -g mouse-select-window on    # 鼠标选择窗口
    
    # move x clipboard into tmux paste buffer
    bind C-p run "tmux set-buffer "$(xclip -o -sel clipbaord)"; tmux paste-buffer" 
    # move tmux copy buffer into x clipboard
    bind C-y run "tmux show-buffer | xclip -i -sel clipbaord"
    
    
    #-- colorscheme --#
    # see also: https://github.com/daethorian/conf-tmux/blob/master/colors/zenburn.conf
    
    # modes
    setw -g clock-mode-colour colour223
    setw -g mode-attr bold
    setw -g mode-fg colour223
    setw -g mode-bg colour235
    
    # panes
    set -g pane-border-bg colour234
    set -g pane-border-fg colour234
    set -g pane-active-border-bg colour232
    set -g pane-active-border-fg colour232
    
    
    # statusbar
    set -g status-justify centre
    set -g status-bg colour235
    set -g status-fg colour248
    set -g status-attr dim
    
    set -g status-left "#[fg=green,bright]Session: #S #[fg=yellow,bright]Window: #I #[fg=cyan,bright]Pane: #P"
    set -g status-left-attr bright
    set -g status-left-length 30
    set -g status-right "#[fg=yellow,bright][ #[fg=cyan,bright]#W #[fg=yellow,bright]]#[default] #[fg=yellow,bright]- %Y.%m.%d #[fg=green,bright]%H:%M #[default]"
    set -g status-right-attr bright
    set-option -g status-right-length 30
    
    setw -g window-status-current-fg colour223
    setw -g window-status-current-bg colour237
    setw -g window-status-current-attr bold
    #setw -g window-status-current-format "#I:#W#F"
    
    #setw -g window-status-alert-attr bold
    #setw -g window-status-alert-fg colour255
    #setw -g window-status-alert-bg colour160
    
    # messages
    set -g message-attr bold
    set -g message-fg colour223
    set -g message-bg colour235
    
    lsgx@DESKTOP-OS0DFSI:~$ 
    lsgx@DESKTOP-OS0DFSI:~$ 
    lsgx@DESKTOP-OS0DFSI:~$ cat ~/.Xresources 
    !------------------------------------------ 
    ! XTerm 
    !------------------------------------------ 
    XTerm*termName:                 xterm-color 
    XTerm*visualBell:               false 
    XTerm*marginBell:               false 
    XTerm*alwaysHighlight:          false 
    XTerm*cursorBlink:              true 
    XTerm*cursorOffTime:            450 
    XTerm*cursorOnTime:             900 
    XTerm*highlightSelection:       true 
    XTerm*saveLines:                8192 
    XTerm*foreground:               rgb:a8/a8/a8 
    XTerm*background:               rgb:00/00/00 
    XTerm*color0:                   rgb:00/00/00 
    XTerm*color1:                   rgb:a8/00/00 
    XTerm*color2:                   rgb:00/a8/00 
    XTerm*color3:                   rgb:a8/54/00 
    XTerm*color4:                   rgb:00/00/a8 
    XTerm*color5:                   rgb:a8/00/a8 
    XTerm*color6:                   rgb:00/a8/a8 
    XTerm*color7:                   rgb:a8/a8/a8 
    XTerm*color8:                   rgb:54/54/54 
    XTerm*color9:                   rgb:fc/54/54 
    XTerm*color10:                  rgb:54/fc/54 
    XTerm*color11:                  rgb:fc/fc/54 
    XTerm*color12:                  rgb:54/54/fc 
    XTerm*color13:                  rgb:fc/54/fc 
    XTerm*color14:                  rgb:54/fc/fc 
    XTerm*color15:                  rgb:fc/fc/fc 
    XTerm*scrollBar:                true 
    XTerm*rightScrollBar:           true 
    XTerm*scrollKey:                false 
    XTerm*scrollTtyOutput:          false 
    XTerm*loginShell:               false 
    XTerm*locale:                   true 
    XTerm*eightBitInput:            false 
    XTerm*eightBitOutput:           true 
    XTerm*metaSendEscape:           true 
    XTerm*faceName:                 Bitstream Vera Sans Mono 
    XTerm*faceSize:                 14 
    XTerm*faceNameDoublesize:       WenQuanYi Bitmap Song 
    XTerm*mkWidth:                  false 
    XTerm*charClass: 33:48,36-47:48,58-59:48,61:48,63-64:48,95:48,126:48
    
    lsgx@DESKTOP-OS0DFSI:~$ 
    lsgx@DESKTOP-OS0DFSI:~$ 

    ================== End

  • 相关阅读:
    悲悯心洞悉真相
    查看逍遥模拟器端口号
    delphi中Tstringlist分割字符串的用法
    delphi中httpencode使用注意事项
    DELPHI常用类型及定义单元
    左旋转字符串
    链表中倒数第k个节点
    二叉树镜像
    用两个栈实现队列
    从尾到头打印链表
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/11558631.html
Copyright © 2020-2023  润新知