diff --git a/runtime/indent/fish.vim b/runtime/indent/fish.vim
new file mode 100644
index 0000000..7455287
--- /dev/null
+++ b/runtime/indent/fish.vim
@@ -0,0 +1,82 @@
+" Vim indent file
+" Language:     fish
+" Maintainer:   Nicholas Boyle (github.com/nickeb96)
+" Repository:   https://github.com/nickeb96/fish.vim
+" Last Change:  February 4, 2023
+
+if exists("b:did_indent")
+    finish
+endif
+let b:did_indent = 1
+
+setlocal indentexpr=GetFishIndent(v:lnum)
+setlocal indentkeys+==end,=else,=case
+
+function s:PrevCmdStart(linenum)
+    let l:linenum = a:linenum
+    " look for the first line that isn't a line continuation
+    while l:linenum > 1 && getline(l:linenum - 1) =~# '\\$'
+        let l:linenum = l:linenum - 1
+    endwhile
+    return l:linenum
+endfunction
+
+function GetFishIndent(lnum)
+    let l:shiftwidth = shiftwidth()
+
+    let l:prevlnum = prevnonblank(a:lnum - 1)
+    if l:prevlnum ==# 0
+        return 0
+    endif
+
+    " if the previous line ended with a line continuation
+    if getline(a:lnum - 1) =~# '\\$'
+        if a:lnum ==# 0 || getline(a:lnum - 2) !~# '\\$'
+            " this is the first line continuation in a chain, so indent it
+            return indent(a:lnum - 1) + l:shiftwidth
+        else
+            " use the same indentation as the previous continued line
+            return indent(a:lnum - 1)
+        endif
+    endif
+
+    let l:prevlnum = s:PrevCmdStart(l:prevlnum)
+
+    let l:prevline = getline(l:prevlnum)
+    if l:prevline =~# '^\s*\(begin\|if\|else\|while\|for\|function\|case\|switch\)\>'
+        let l:indent = l:shiftwidth
+    else
+        let l:indent = 0
+    endif
+
+    let l:line = getline(a:lnum)
+    if l:line =~# '^\s*end\>'
+        " find end's matching start
+        let l:depth = 1
+        let l:currentlnum = a:lnum
+        while l:depth > 0 && l:currentlnum > 0
+            let l:currentlnum = s:PrevCmdStart(prevnonblank(l:currentlnum - 1))
+            let l:currentline = getline(l:currentlnum)
+            if l:currentline =~# '^\s*end\>'
+                let l:depth = l:depth + 1
+            elseif l:currentline =~# '^\s*\(begin\|if\|while\|for\|function\|switch\)\>'
+                let l:depth = l:depth - 1
+            endif
+        endwhile
+        if l:currentline =~# '^\s*switch\>'
+            return indent(l:currentlnum)
+        else
+            return indent(l:prevlnum) + l:indent - l:shiftwidth
+        endif
+    elseif l:line =~# '^\s*else\>'
+        return indent(l:prevlnum) + l:indent - l:shiftwidth
+    elseif l:line =~# '^\s*case\>'
+        if getline(l:prevlnum) =~# '^\s*switch\>'
+            return indent(l:prevlnum) + l:indent
+        else
+            return indent(l:prevlnum) + l:indent - l:shiftwidth
+        endif
+    else
+        return indent(l:prevlnum) + l:indent
+    endif
+endfunction
diff --git a/runtime/indent/vim.vim b/runtime/indent/vim.vim
index 2cb3237..7b45d41 100644
--- a/runtime/indent/vim.vim
+++ b/runtime/indent/vim.vim
@@ -3,7 +3,7 @@
 # Vim indent file
 # Language:	Vim script
 # Maintainer:	Bram Moolenaar <Bram@vim.org>
-# Last Change:	2022 Oct 5
+# Last Change:	2023 Feb 02
 
 # Only load this indent file when no other was loaded.
 if exists('b:did_indent')
@@ -16,7 +16,7 @@
 import autoload '../autoload/dist/vimindent.vim'
 
 setlocal indentexpr=vimindent.Expr()
-setlocal indentkeys+==endif,=enddef,=endfu,=endfor,=endwh,=endtry,=},=else,=cat,=finall,=END,0\\
+setlocal indentkeys+==endif,=enddef,=endfu,=endfor,=endwh,=endtry,=endclass,=endinterface,=endenum,=},=else,=cat,=finall,=END,0\\
 execute('setlocal indentkeys+=0=\"\\\ ,0=#\\\ ')
 setlocal indentkeys-=0#
 setlocal indentkeys-=:
