Linux基础知识——tmux和vim

编程入门 行业动态 更新时间:2024-10-23 06:24:07

Linux<a href=https://www.elefans.com/category/jswz/34/1769428.html style=基础知识——tmux和vim"/>

Linux基础知识——tmux和vim

Linux基础知识——tmux和vim

文章目录

  • Linux基础知识——tmux和vim
    • 一、tmux
      • 1. 功能
      • 2. 结构
      • 3. 操作
    • 二、vim
      • 功能
      • 模式
      • 操作

一、tmux

tmux配置:~/.tmux.conf修改为如下

set-option -g status-keys vi
setw -g mode-keys visetw -g monitor-activity on# setw -g c0-change-trigger 10
# setw -g c0-change-interval 100# setw -g c0-change-interval 50
# setw -g c0-change-trigger  75set-window-option -g automatic-rename on
set-option -g set-titles on
set -g history-limit 100000#set-window-option -g utf8 on# set command prefix
set-option -g prefix C-a
unbind-key C-b
bind-key C-a send-prefixbind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -Rbind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -Dbind < resize-pane -L 7
bind > resize-pane -R 7
bind - resize-pane -D 7
bind + resize-pane -U 7bind-key -n M-l next-window
bind-key -n M-h previous-windowset -g status-interval 1
# status bar
set -g status-bg black
set -g status-fg blue#set -g status-utf8 on
set -g status-justify centre
set -g status-bg default
set -g status-left " #[fg=green]#S@#H #[default]"
set -g status-left-length 20# mouse support
# for tmux 2.1
# set -g mouse-utf8 on
set -g mouse on
#
# for previous version
#set -g mode-mouse on
#set -g mouse-resize-pane on
#set -g mouse-select-pane on
#set -g mouse-select-window on#set -g status-right-length 25
set -g status-right "#[fg=green]%H:%M:%S #[fg=magenta]%a %m-%d #[default]"# fix for tmux 1.9
bind '"' split-window -vc "#{pane_current_path}"
bind '%' split-window -hc "#{pane_current_path}"
bind 'c' new-window -c "#{pane_current_path}"# run-shell "powerline-daemon -q"# vim: ft=conf

1. 功能

  1. 分屏
  2. 断开Terminal连接后,继续运行tmux中的进程

2. 结构

一个tmux可以包含多个session,一个session可以包含多个window,一个window可以包含多个pane。
实例:

        tmux:session 0:window 0:pane 0pane 1pane 2...window 1window 2...session 1session 2...

3. 操作

  • tmux:新建一个session,其中包含一个window,window中包含一个pane,pane里打开了一个shell对话框。
  • Ctrl + a %:按下Ctrl + a后手指松开,然后按%:将当前pane左右平分成两个pane。(左右分屏)
  • Ctrl + a " 按下Ctrl + a后手指松开,然后按"(注意是双引号"):将当前pane上下平分成两个pane。(上下分屏)
  • Ctrl + d:关闭当前pane;如果当前window的所有pane均已关闭,则自动关闭window;如果当前session的所有window均已关闭,则自动关闭session。
  • 选择pane:鼠标点击可以选pane、按下ctrl a后手指松开,然后按方向键:选择相邻的pane。
  • 调整pane之间的分割线:鼠标拖动pane之间的分割线,可以调整分割线的位置。按住ctrl + a的同时按方向键,可以调整pane之间分割线的位置。
  • Ctrl + a z:按下ctrl + a后手指松开,然后按z:将当前pane全屏/取消全屏。
  • Ctrl + a d:按下ctrl + a后手指松开,然后按d:挂起当前session。
  • tmux a:打开之前挂起的session。
  • tmux中复制/粘贴文本的通用方式:
    (1) 按下Ctrl + a后松开手指,然后按[
    (2) 用鼠标选中文本,被选中的文本会被自动复制到tmux的剪贴板
    (3) 按下Ctrl + a后松开手指,然后按],会将剪贴板中的内容粘贴到光标处

二、vim

vim配置:~/.vimrc修改为如下

" An example for a vimrc file.
"
" 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" When started as "evim", evim.vim will already have done these settings.
if v:progname =~? "evim"finish
endif" Use Vim settings, rather then Vi settings (much better!).
" This must be first, because it changes other options as a side effect.
set nocompatible" allow backspacing over everything in insert mode
set backspace=indent,eol,startif has("vms")set nobackup          " do not keep a backup file, use versions instead
elseset backup            " keep a backup file
endif
set history=50          " keep 50 lines of command line history
set ruler               " show the cursor position all the time
set showcmd             " display incomplete commands
set incsearch           " do incremental searching
"==========================================================================
"My Setting-sunshanlu
"==========================================================================
vmap <leader>y :w! /tmp/vitmp<CR>
nmap <leader>p :r! cat /tmp/vitmp<CR>"语法高亮
syntax enable
syntax on
"显示行号
set nu"修改默认注释颜色
"hi Comment ctermfg=DarkCyan
"允许退格键删除
"set backspace=2
"启用鼠标
set mouse=a
set selection=exclusive
set selectmode=mouse,key
"按C语言格式缩进
set cindent
set autoindent
set smartindent
set shiftwidth=4" 允许在有未保存的修改时切换缓冲区
"set hidden" 设置无备份文件
set writebackup
set nobackup"显示括号匹配
set showmatch
"括号匹配显示时间为1(单位是十分之一秒)
set matchtime=5
"显示当前的行号列号:
set ruler
"在状态栏显示正在输入的命令
set showcmdset foldmethod=syntax
"默认情况下不折叠
set foldlevel=100
" 开启状态栏信息
set laststatus=2
" 命令行的高度,默认为1,这里设为2
set cmdheight=2" 显示Tab符,使用一高亮竖线代替
set list
"set listchars=tab:\|\ ,
set listchars=tab:>-,trail:-"侦测文件类型
filetype on
"载入文件类型插件
filetype plugin on
"为特定文件类型载入相关缩进文件
filetype indent on
" 启用自动补全
filetype plugin indent on "设置编码自动识别, 中文引号显示
filetype on "打开文件类型检测
"set fileencodings=euc-cn,ucs-bom,utf-8,cp936,gb2312,gb18030,gbk,big5,euc-jp,euc-kr,latin1
set fileencodings=utf-8,gb2312,gbk,gb18030
"这个用能很给劲,不管encoding是什么编码,都能将文本显示汉字
"set termencoding=gb2312
set termencoding=utf-8
"新建文件使用的编码
set fileencoding=utf-8
"set fileencoding=gb2312
"用于显示的编码,仅仅是显示
set encoding=utf-8
"set encoding=utf-8
"set encoding=euc-cn
"set encoding=gbk
"set encoding=gb2312
"set ambiwidth=double
set fileformat=unix"设置高亮搜索
set hlsearch
"在搜索时,输入的词句的逐字符高亮
set incsearch" 着色模式
set t_Co=256
"colorscheme wombat256mod
"colorscheme gardener
"colorscheme elflord
colorscheme desert
"colorscheme evening
"colorscheme darkblue
"colorscheme torte
"colorscheme default" 字体 && 字号
set guifont=Monaco:h10
"set guifont=Consolas:h10" :LoadTemplate       根据文件后缀自动加载模板
"let g:template_path='/home/ruchee/.vim/template/'" :AuthorInfoDetect   自动添加作者、时间等信息,本质是NERD_commenter && authorinfo的结合
""let g:vimrc_author='sunshanlu'
""let g:vimrc_email='sunshanlu@baidu'
""let g:vimrc_homepage=''
"
"
" Ctrl + E            一步加载语法模板和作者、时间信息
""map <c-e> <ESC>:AuthorInfoDetect<CR><ESC>Gi
""imap <c-e> <ESC>:AuthorInfoDetect<CR><ESC>Gi
""vmap <c-e> <ESC>:AuthorInfoDetect<CR><ESC>Gi" ======= 引号 && 括号自动匹配 ======= "
"
":inoremap ( ()<ESC>i":inoremap ) <c-r>=ClosePair(')')<CR>
"
":inoremap { {}<ESC>i
"
":inoremap } <c-r>=ClosePair('}')<CR>
"
":inoremap [ []<ESC>i
"
":inoremap ] <c-r>=ClosePair(']')<CR>
"
":inoremap < <><ESC>i
"
":inoremap > <c-r>=ClosePair('>')<CR>
"
"":inoremap " ""<ESC>i
"
":inoremap ' ''<ESC>i
"
":inoremap ` ``<ESC>i
"
":inoremap * **<ESC>i" 每行超过80个的字符用下划线标示
""au BufRead,BufNewFile *.s,*.asm,*.h,*.c,*.cpp,*.java,*.cs,*.lisp,*.el,*.erl,*.tex,*.sh,*.lua,*.pl,*.php,*.tpl,*.py,*.rb,*.erb,*.vim,*.js,*.jade,*.coffee,*.css,*.xml,*.html,*.shtml,*.xhtml Underlined /.\%81v/
"
"
" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries
" let &guioptions = substitute(&guioptions, "t", "", "g")" Don't use Ex mode, use Q for formatting
map Q gq" This is an alternative that also works in block mode, but the deleted
" text is lost and it only works for putting the current register.
"vnoremap p "_dp" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has("gui_running")syntax onset hlsearch
endif" Only do this part when compiled with support for autocommands.
if has("autocmd")" Enable file type detection." Use the default filetype settings, so that mail gets 'tw' set to 72," 'cindent' is on in C files, etc." Also load indent files, to automatically do language-dependent indenting.filetype plugin indent on" Put these in an autocmd group, so that we can delete them easily.augroup vimrcExau!" For all text files set 'textwidth' to 80 characters.autocmd FileType text setlocal textwidth=80" When editing a file, always jump to the last known cursor position." Don't do it when the position is invalid or when inside an event handler" (happens when dropping a file on gvim).autocmd BufReadPost *\ if line("'\"") > 0 && line("'\"") <= line("$") |\   exe "normal g`\"" |\ endifaugroup ENDelseset autoindent                " always set autoindenting onendif " has("autocmd")" 增加标行高亮
set cursorline
hi CursorLine  cterm=NONE   ctermbg=darkred ctermfg=white" 设置tab是四个空格
set ts=4
set expandtab" 主要给Tlist使用
let Tlist_Exit_OnlyWindow = 1
let Tlist_Auto_Open = 1

功能

  1. 命令行模式下的文本编辑器。
  2. 根据文件扩展名自动判别编程语言。支持代码缩进、代码高亮等功能。
  3. 使用方式:vim filename
    如果已有该文件,则打开它。
    如果没有该文件,则打开个一个新的文件,并命名为filename

模式

  1. 一般命令模式
    默认模式。命令输入方式:按不同字符,即可进行不同操作。可以复制、粘贴、删除文本等。
  2. 编辑模式
    在一般命令模式里按下i或者insert,会进入编辑模式。
    按下ESC会退出编辑模式,返回到一般命令模式。
  3. 命令行模式
    在一般命令模式里按下:/?三个字母中的任意一个,会进入命令行模式。命令行在最下面。
    可以查找、替换、保存、退出、配置编辑器等。

操作

模式切换

  • i:进入编辑模式
  • ESC:进入一般命令模式

光标或者指针跳转

  • h j k l分别代表光标←、↓、↑、→
  • n + <Space>: n表示数字,按下数字后再按空格,光标会向右移动这一行的n个字符
  • 0功能键[Home]:光标移动到本行开头
  • $功能键[End]:光标移动到本行末尾
  • G:光标移动到最后一行
  • :nnG:光标移到第n行
  • gg:相当于1G:1光标移动到第一行
  • n + <Enter>:n为数字,光标向下移动n行

查找替换

  • /word:向光标之下寻找第一个值为word的字符串
  • ?word:向光标之上寻找第一个值为word的字符串
  • :n1,n2s/word1/word2/g:n1与n2为数字,在第n1行与n2行之间寻找word1这个字符串,并将该字符串替换为word2
  • :1,$s/word1/word2/g:将全文的word1替换为word2
  • :1,$s/word1/word2/gc:将全文的word1替换为word2,且在替换前要求用户确认。

文本操作

  • v:选中文本
  • d:删除选中的文本
  • dd:删除当前行
  • y:复制选中的文本
  • yy:复制当前行
  • p:将复制的数据在光标的下一行/下一个位置粘贴
  • u:撤销
  • Ctrl + r:取消撤销
  • >:将选中的文本整体向右缩进一次
  • <:将选中的文本整体向左缩进一次

编辑器操作

  • :w 保存
  • :w! 强制保存
  • :q 退出
  • :q! 强制退出
  • :wq 保存并退出
  • :set paste 设置成粘贴模式,取消代码自动缩进
  • :set nopaste 取消粘贴模式,开启代码自动缩进
  • :set nu 显示行号
  • set nonu 隐藏行号
  • gg=G:将全文代码格式化
  • :noh 关闭查找关键词高亮

解决遇到的BUG
Ctrl + q:当vim卡死时,可以取消当前正在执行的命令
异常处理:
每次用vim编辑文件时,会自动创建一个.filename.swp的临时文件。
如果打开某个文件时,该文件的swp文件已存在,则会报错。此时解决办法有两种:
(1) 找到正在打开该文件的程序,并退出
(2) 直接删掉该swp文件即可

更多推荐

Linux基础知识——tmux和vim

本文发布于:2023-11-15 00:33:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1590528.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:基础知识   Linux   vim   tmux

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!